hetu-core/hetu-docs/zh/connector/clickhouse.md

6.0 KiB
Raw Permalink Blame History

ClickHouse连接器

概述

Clickhouse连接器允许在外部ClickHouse数据库中查询和创建表。这可用于在ClickHouse和Hive等不同系统之间或在两个不同的ClickHouse实例之间联接数据。

配置

基础配置

要配置ClickHouse连接器etc/catalog中创建一个目录属性文件,例如clickhouse.properties将ClickHouse连接器挂载为clickhouse目录。使用以下内容创建文件,并根据设置替换连接属性。

基本属性设置:

connector.name=clickhouse
connection-url=jdbc:clickhouse://example.net:8123
connection-user=username
connection-password=yourpassword
  • 是否允许连接器删除表
allow-drop-table=true
  • 是否开启查询下推功能。

连接器的下推功能默认打开,也可以如下设置:

clickhouse.query.pushdown.enabled=true
  • 是否区分表名大小写

与openLooKeng不同ClickHouse的语法是大小写敏感的如果您的数据库表中存在大写字段可以按如下设置。

case-insensitive-name-matching=true

多套ClickHouse数据库或服务器

可以根据需要创建任意多的目录因此如果有额外的ClickHouse服务器只需添加另一个不同的名称的属性文件到etc/catalog中(确保它以.properties结尾)。例如,如果将属性文件命名为clickhouse2.propertiesopenLooKeng将使用配置的连接器创建一个名为clickhouse2的目录。

通过openLooKeng查询ClickHouse

通过SHOW SCHEMAS来查看可用的ClickHouse数据库

SHOW SCHEMAS FROM clickhouse;

如果有一个名为data的ClickHouse数据库可以通过执行SHOW TABLES查看数据库中的表:

SHOW TABLES FROM clickhouse.data;

若要查看数据模式中名为hello的表中的列的列表,请使用以下命令中的一种:

DESCRIBE clickhouse.data.hello;
SHOW COLUMNS FROM clickhouse.data.hello;

你可以访问数据模式中的hello表:

SELECT * FROM clickhouse.data.hello;

如果对目录属性文件使用不同的名称,请使用该目录名称,而不要使用上述示例中的clickhouse

openLooKeng和ClickHouse之间的映射数据类型

ClickHouse到openLooKeng类型映射

下表显示了ClickHouse数据类型到openLooKeng的的映射关系。

数据类型投影表:

ClickHouse类型 openLooKeng类型 说明
Int8 TINYINT
Int16 SMALLINT
Int32 INTEGER
Int64 BIGINT
float32 REAL
float64 DOUBLE
DECIMAL(P,S) DECIMAL(P,S)
DECIMAL32(S) DECIMAL(P,S)
DECIMAL64(S) DECIMAL(P,S)
DECIMAL128(S) DECIMAL(P,S)
String VARCHAR
DateTime TIMESTAMP
Fixedstring(N) CHAR
UInt8 SMALLINT
UInt16 INT
UInt32 BIGINT
UInt64 BIGINT
Int128,Int256,UInt256 不涉及

openLooKeng到ClickHouse类型映射

下表显示了从openLooKeng到ClickHouse数据类型的映射关系。

openLooKeng类型 ClickHouse数据库类型 说明
BOOLEAN Int8
TINYINT Int8
SMALLINT Int16
INTEGER Int32
BIGINT Int64
REAL float32
DOUBLE float64
DECIMAL(P,S) DECIMAL(P,S)
varchar String
varchar(n) String
CHAR(n) FixedString(n)
VARBINARY String
JSON 不涉及
DATE DATE
TIME 不涉及
TIME WITH TIME ZONE 不涉及
TIMESTAMP DateTime
TIMESTAMP WITH TIME ZONE 不涉及

openLooKeng到ClickHouse函数映射

下面列举ClickHouse插件支持下推的函数。说明“$n”是占位符用于在函数中表示参数。

聚合统计函数

count($1)
min($1)
max($1)
sum($1)
avg($1)
CORR($1,$2)
STDDEV($1)
stddev_pop($1)
stddev_samp($1)
skewness($1)
kurtosis($1)
VARIANCE($1)
var_samp($1)

数学函数

ABS($1)
ACOS($1)
ASIN($1)
ATAN($1)
ATAN2($1,$2)
CEIL($1)
CEILING($1)
COS($1)
e()
EXP($1)
FLOOR($1)
LN($1)
LOG10($1)
LOG2($1)
MOD($1,$2)
pi()
POW($1,$2)
POWER($1,$2)
RAND()
RANDOM()
ROUND($1)
ROUND($1,$2)
SIGN($1)
SIN($1)
SQRT($1)
TAN($1)

字符串函数

CONCAT($1,$2)
LENGTH($1)
LOWER($1)
LTRIM($1)
REPLACE($1,$2)
REPLACE($1,$2,$3)
RTRIM($1)
STRPOS($1,$2)
SUBSTR($1,$2,$3)
POSITION($1,$2)
TRIM($1)
UPPER($1)

时间日期函数

YEAR($1)
MONTH($1)
QUARTER($1)
WEEK($1)
DAY($1)
HOUR($1)
MINUTE($1)
SECOND($1)
DAY_OF_WEEK($1)
DAY_OF_MONTH($1)
DAY_OF_YEAR($1)

ClickHouse连接器的限制

语法

暂不支持CREATE TABLE操作。

INSERT语句需要使用CAST强制转换例如table_name_test表中的数据类型为smallint

insert into table_name_test values (cast(1 as small int));

由于查询语句的执行顺序不同ClickHouse支持 as 表达式的别名在where中使用但在openLooKeng中不允许。

类型限制

暂不支持ClickHouse中的uuid等类型所有支持类型已在映射表中列出。