ClickHouse 连接器¶
ClickHouse 连接器允许查询外部 ClickHouse 服务器中的表。这可以用于查询该服务器上的数据库中的数据,或将其与来自不同目录的其他数据(访问 ClickHouse 或任何其他支持的数据源)结合起来。
需求¶
要连接到 ClickHouse 服务器,您需要
ClickHouse 版本 20.8 或更高版本。
Presto 协调器和工作节点到 ClickHouse 服务器的网络访问。端口 8123 是默认端口。
配置¶
连接器可以查询 ClickHouse 服务器。创建一个目录属性文件,通过将 connector.name
设置为 clickhouse
来指定 ClickHouse 连接器。
例如,要访问服务器为 clickhouse
,请创建文件 etc/catalog/clickhouse.properties
。根据您的设置情况替换连接属性
connector.name=clickhouse
clickhouse.connection-url=jdbc:clickhouse://host1:8123/
clickhouse.connection-user=default
clickhouse.connection-password=secret
多个 ClickHouse 服务器¶
如果您有多个 ClickHouse 服务器,则需要为每个服务器配置一个目录。要添加另一个目录
将另一个属性文件添加到
etc/catalog
以不同的名称保存它,该名称以
.properties
结尾
例如,如果您将属性文件命名为 clickhouse.properties
,Prestodb 将使用配置的连接器来创建一个名为 clickhouse
的目录。
通用配置属性¶
下表描述了连接器的通用目录配置属性
属性名称 |
默认值 |
描述 |
---|---|---|
|
false |
创建表时,支持 ClickHouse 数据类型 String。 |
|
false |
允许删除表操作。 |
查询 ClickHouse¶
ClickHouse 连接器为每个 ClickHouse 数据库提供了一个模式。运行 SHOW SCHEMAS
以查看可用的 ClickHouse 数据库
SHOW SCHEMAS FROM clickhouse;
如果您有一个名为 tpch
的 ClickHouse 数据库,请运行 SHOW TABLES
以查看此数据库中的表
SHOW TABLES FROM clickhouse.tpch;
运行 DESCRIBE
或 SHOW COLUMNS
以列出 tpch
数据库中 cks
表中的列
DESCRIBE clickhouse.tpch.cks;
SHOW COLUMNS FROM clickhouse.tpch.cks;
运行 SELECT
以访问 tpch
数据库中的 cks
表
SELECT * FROM clickhouse.tpch.cks;
注意
如果您为目录属性文件使用了不同的名称,请在上面的示例中使用该目录名称代替 clickhouse
。
表属性¶
表属性使用示例
CREATE TABLE default.prestodb_ck (
id int NOT NULL,
birthday DATE NOT NULL,
name VARCHAR,
age BIGINT,
logdate DATE NOT NULL
)
WITH (
engine = 'MergeTree',
order_by = ARRAY['id', 'birthday'],
partition_by = ARRAY['toYYYYMM(logdate)'],
primary_key = ARRAY['id'],
sample_by = 'id'
);
以下是来自 https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/mergetree/ 的支持的 ClickHouse 表属性
属性名称 |
默认值 |
描述 |
---|---|---|
|
|
引擎的名称和参数。 |
|
(none) |
用于连接以创建排序键的列或表达式的数组。如果 |
|
(none) |
用作嵌套分区键的列或表达式的数组。可选。 |
|
(none) |
用于连接以创建主键的列或表达式的数组。可选。 |
|
(none) |
用于 抽样 的表达式。可选。 |
目前,连接器仅支持 Log
和 MergeTree
表引擎在创建表语句中。 ReplicatedMergeTree
引擎尚不支持。
下推¶
连接器支持对许多操作进行下推
limit-pushdown
SQL 支持¶
连接器提供对 ClickHouse 目录中的数据和元数据的读写访问权限。除了全局可用和读操作语句之外,连接器还支持以下功能