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 的目录。

通用配置属性

下表描述了连接器的通用目录配置属性

属性名称

默认值

描述

clickhouse.map-string-as-varchar

false

创建表时,支持 ClickHouse 数据类型 String。

clickhouse.allow-drop-table

false

允许删除表操作。

查询 ClickHouse

ClickHouse 连接器为每个 ClickHouse 数据库提供了一个模式。运行 SHOW SCHEMAS 以查看可用的 ClickHouse 数据库

SHOW SCHEMAS FROM clickhouse;

如果您有一个名为 tpch 的 ClickHouse 数据库,请运行 SHOW TABLES 以查看此数据库中的表

SHOW TABLES FROM clickhouse.tpch;

运行 DESCRIBESHOW 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 表属性

属性名称

默认值

描述

engine

Log

引擎的名称和参数。

order_by

(none)

用于连接以创建排序键的列或表达式的数组。如果 engineMergeTree,则需要此参数。

partition_by

(none)

用作嵌套分区键的列或表达式的数组。可选。

primary_key

(none)

用于连接以创建主键的列或表达式的数组。可选。

sample_by

(none)

用于 抽样 的表达式。可选。

目前,连接器仅支持 LogMergeTree 表引擎在创建表语句中。 ReplicatedMergeTree 引擎尚不支持。

下推

连接器支持对许多操作进行下推

  • limit-pushdown

SQL 支持

连接器提供对 ClickHouse 目录中的数据和元数据的读写访问权限。除了全局可用和读操作语句之外,连接器还支持以下功能