ClickHouse连接器

概述

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

配置

基础配置

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

基本属性设置:

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

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

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

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

  1. case-insensitive-name-matching=true

多套ClickHouse数据库或服务器

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

通过openLooKeng查询ClickHouse

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

  1. SHOW SCHEMAS FROM clickhouse;

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

  1. SHOW TABLES FROM clickhouse.data;

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

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

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

  1. SELECT * FROM clickhouse.data.hello;

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

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

ClickHouse到openLooKeng类型映射

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

数据类型投影表:

ClickHouse类型openLooKeng类型说明
Int8TINYINT
Int16SMALLINT
Int32INTEGER
Int64BIGINT
float32REAL
float64DOUBLE
DECIMAL(P,S)DECIMAL(P,S)
DECIMAL32(S)DECIMAL(P,S)
DECIMAL64(S)DECIMAL(P,S)
DECIMAL128(S)DECIMAL(P,S)
StringVARCHAR
DateTimeTIMESTAMP
Fixedstring(N)CHAR
UInt8SMALLINT
UInt16INT
UInt32BIGINT
UInt64BIGINT
Int128,Int256,UInt256不涉及

openLooKeng到ClickHouse类型映射

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

openLooKeng类型ClickHouse数据库类型说明
BOOLEANInt8
TINYINTInt8
SMALLINTInt16
INTEGERInt32
BIGINTInt64
REALfloat32
DOUBLEfloat64
DECIMAL(P,S)DECIMAL(P,S)
varcharString
varchar(n)String
CHAR(n)FixedString(n)
VARBINARYString
JSON不涉及
DATEDATE
TIME不涉及
TIME WITH TIME ZONE不涉及
TIMESTAMPDateTime
TIMESTAMP WITH TIME ZONE不涉及

openLooKeng到ClickHouse函数映射

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

聚合统计函数

  1. count($1)
  2. min($1)
  3. max($1)
  4. sum($1)
  5. avg($1)
  6. CORR($1,$2)
  7. STDDEV($1)
  8. stddev_pop($1)
  9. stddev_samp($1)
  10. skewness($1)
  11. kurtosis($1)
  12. VARIANCE($1)
  13. var_samp($1)

数学函数

  1. ABS($1)
  2. ACOS($1)
  3. ASIN($1)
  4. ATAN($1)
  5. ATAN2($1,$2)
  6. CEIL($1)
  7. CEILING($1)
  8. COS($1)
  9. e()
  10. EXP($1)
  11. FLOOR($1)
  12. LN($1)
  13. LOG10($1)
  14. LOG2($1)
  15. MOD($1,$2)
  16. pi()
  17. POW($1,$2)
  18. POWER($1,$2)
  19. RAND()
  20. RANDOM()
  21. ROUND($1)
  22. ROUND($1,$2)
  23. SIGN($1)
  24. SIN($1)
  25. SQRT($1)
  26. TAN($1)

字符串函数

  1. CONCAT($1,$2)
  2. LENGTH($1)
  3. LOWER($1)
  4. LTRIM($1)
  5. REPLACE($1,$2)
  6. REPLACE($1,$2,$3)
  7. RTRIM($1)
  8. STRPOS($1,$2)
  9. SUBSTR($1,$2,$3)
  10. POSITION($1,$2)
  11. TRIM($1)
  12. UPPER($1)

时间日期函数

  1. YEAR($1)
  2. MONTH($1)
  3. QUARTER($1)
  4. WEEK($1)
  5. DAY($1)
  6. HOUR($1)
  7. MINUTE($1)
  8. SECOND($1)
  9. DAY_OF_WEEK($1)
  10. DAY_OF_MONTH($1)
  11. DAY_OF_YEAR($1)

ClickHouse连接器的限制

语法

暂不支持CREATE TABLE操作。

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

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

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

类型限制

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