ClickHouse コネクタ

ClickHouse コネクタを使用すると、外部の ClickHouse サーバー内のテーブルをクエリできます。これは、そのサーバー上のデータベース内のデータをクエリしたり、ClickHouse またはその他のサポートされているデータソースにアクセスする別のカタログのデータと組み合わせたりするために使用できます。

要件

ClickHouse サーバーに接続するには、以下が必要です

  • ClickHouse バージョン 20.8 以上。

  • Presto コーディネーターおよびワーカーから ClickHouse サーバーへのネットワークアクセス。ポート 8123 がデフォルトのポートです。

設定

コネクタは ClickHouse サーバーをクエリできます。connector.nameclickhouse に設定して、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 サーバーがある場合は、サーバーごとに 1 つのカタログを設定する必要があります。別のカタログを追加するには

  • 別のプロパティファイルを 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;

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 テーブルプロパティです

プロパティ名

デフォルト値

説明

engine

Log

エンジンの名前とパラメータ。

order_by

(なし)

ソートキーを作成するために連結する列または式の配列。 engineMergeTree の場合は必須。

partition_by

(なし)

ネストされたパーティションキーとして使用する列または式の配列。オプション。

primary_key

(なし)

プライマリキーを作成するために連結する列または式の配列。オプション。

sample_by

(なし)

サンプリングに使用する式。オプション。

現在、コネクタは create table ステートメントで Log および MergeTree テーブルエンジンのみをサポートしています。 ReplicatedMergeTree エンジンはまだサポートされていません。

プッシュダウン

コネクタは、多数の操作に対するプッシュダウンをサポートします

  • limit-pushdown

SQL サポート

コネクタは、ClickHouse カタログ内のデータとメタデータへの読み取りおよび書き込みアクセスを提供します。グローバルに利用可能な読み取り操作ステートメントに加えて、コネクタは次の機能をサポートします。