ClickHouse は複数のカタログ (Unity、Glue、Polaris など) とのインテグレーションをサポートしています。このガイドでは、ClickHouse と Apache Polaris Catalog を使用してデータをクエリする手順を説明します。 Apache Polaris は Iceberg テーブルと Delta Tables (Generic Tables 経由) をサポートしていますが、現時点でこのインテグレーションでサポートされているのは Iceberg テーブルのみです。
前提条件
Polaris カタログに接続するには、次のものが必要です。
- Snowflake Open Catalog (ホスト型の Polaris) またはセルフホストの Polaris カタログ
- Polaris カタログの URI (例:
https://<account-id>.<region>.aws.snowflakecomputing.com/polaris/api/catalog/v1またはhttp://polaris:8181/api/catalog/v1/oauth/tokens) - カタログの認証情報 (client ID と client secret)
- Polaris インスタンスの OAuth トークン URI
- Iceberg データが保存されているオブジェクトストアのストレージエンドポイント (例: S3)
- ClickHouse 26.1 以降
Snowflake のマネージド Polaris である Open Catalog では、URI に /polaris が含まれます。一方、セルフホストの場合は含まれないことがあります。
Polaris と ClickHouse の接続を作成する
ClickHouse を Polaris カタログに接続するデータベースを作成します。
CREATE DATABASE polaris_catalog
ENGINE = DataLakeCatalog('https://<catalog_uri>/api/catalog/v1')
SETTINGS
catalog_type = 'rest',
catalog_credential = '<client-id>:<client-secret>',
warehouse = 'snowflake',
auth_scope = 'PRINCIPAL_ROLE:ALL',
oauth_server_uri = 'https://<catalog_uri>/api/catalog/v1/oauth/tokens',
storage_endpoint = '<storage_endpoint>'ClickHouse を使って Polaris カタログをクエリする
接続が確立されたら、Polaris に対してクエリを実行できます。
USE polaris_catalog;
SHOW TABLES;テーブルをクエリするには、次を実行します。
SELECT count(*) FROM `polaris_db.my_iceberg_table`;テーブルの DDL を確認するには、次を実行します。
SHOW CREATE TABLE `polaris_db.my_iceberg_table`;Polaris から ClickHouse にデータを読み込む
Polaris から ClickHouse のテーブルにデータを読み込むには、まず必要なスキーマでターゲットテーブルを作成し、その後 Polaris のテーブルから INSERT します。
CREATE TABLE my_clickhouse_table
(
-- Iceberg テーブルに合わせてカラムを定義
`id` Int64,
`name` String,
`event_time` DateTime64(3)
)
ENGINE = MergeTree
ORDER BY id;
INSERT INTO my_clickhouse_table
SELECT * FROM polaris_catalog.`polaris_db.my_iceberg_table`;