Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Lakehouse runtime catalog(BigLake Metastore)

ベータ機能

ClickHouse は、複数のカタログ (Unity、Glue、Polaris など) とのインテグレーションをサポートしています。このガイドでは、ClickHouse を介して Lakehouse runtime catalog (別名 BigLake Metastore) 内の Iceberg テーブルをクエリする手順を説明します。

前提条件

ClickHouse から Lakehouse runtime catalog (BigLake Metastore) への接続を作成する前に、以下を用意してください。

  • Lakehouse runtime catalog が有効になっている Google Cloud プロジェクト
  • Google Cloud Console で作成した、アプリケーション用の Application Default credentials (OAuth クライアント ID とクライアント シークレット)
  • 適切なスコープ (例: https://www.googleapis.com/auth/bigquery および GCS 用の storage スコープ) で OAuth フローを完了して取得した リフレッシュ トークン
  • warehouse パス: テーブルが保存されている GCS バケット (必要に応じてプレフィックスを含む) 。例: gs://your-bucket または gs://your-bucket/prefix

Lakehouse runtime catalog と ClickHouse の接続を作成する

OAuth 認証情報を用意したら、DataLakeCatalog データベースエンジンを使用するデータベースを ClickHouse に作成します:

SET allow_database_iceberg = 1;

CREATE DATABASE lakehouse_runtime_catalog
ENGINE = DataLakeCatalog('https://biglake.googleapis.com/iceberg/v1/restcatalog')
SETTINGS
    catalog_type = 'biglake',
    google_adc_client_id = '<client-id>',
    google_adc_client_secret = '<client-secret>',
    google_adc_refresh_token = '<refresh-token>',
    google_adc_quota_project_id = '<gcp-project-id>',
    warehouse = 'gs://<bucket_name>/<optional-prefix>';

ClickHouse から Lakehouse runtime catalog のテーブルをクエリする

接続を作成したら、Lakehouse runtime catalog に登録されているテーブルをクエリできます。

USE LAKEHOUSE_RUNTIME_CATALOG;

SHOW TABLES;

出力例:

┌─name──────────────────────────────────────┐
│lakehouse_runtime_catalog.my_iceberg_table │   
└───────────────────────────────────────────┘
SELECT count(*) FROM `lakehouse_runtime_catalog.my_iceberg_table`;

テーブル定義を確認するには:

SHOW CREATE TABLE `lakehouse_runtime_catalog.my_iceberg_table`;

Lakehouse から ClickHouse へのデータの取り込み

Lakehouse runtime catalog のテーブルからローカルの ClickHouse テーブルにデータを取り込み、繰り返し実行するクエリを高速化するには、MergeTree テーブルを作成し、カタログからデータを挿入します:

CREATE TABLE clickhouse_table
(
    `id` Int64,
    `event_time` DateTime64(3),
    `user_id` String,
    `payload` String
)
ENGINE = MergeTree
ORDER BY (event_time, id);

INSERT INTO local_events
SELECT * FROM lakehouse_runtime_catalog.`icebench.my_iceberg_table`;

初期ロード後は、レイテンシを抑えるために clickhouse_table に対してクエリを実行します。必要に応じて INSERT INTO ... SELECT を再実行し、BigLake のデータを更新してください。

Navigation