Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Lakehouse 运行时目录(BigLake Metastore)

Beta 版功能

ClickHouse 支持与多个目录 (如 Unity、Glue、Polaris 等) 集成。本指南将逐步介绍如何通过 ClickHouse 查询 Lakehouse 运行时目录 (即 BigLake Metastore) 中的 Iceberg 表。

前置条件

在创建从 ClickHouse 到 Lakehouse 运行时目录 (BigLake Metastore) 的 connection 之前,请确保你已具备以下条件:

  • 一个已启用 Lakehouse 运行时目录的 Google Cloud 项目
  • 某个应用的 应用默认凭据 (OAuth client ID 和 client secret) ,通过 Google Cloud Console 创建
  • 通过完成具有适当作用域的 OAuth 流程获取的 刷新令牌 (例如 https://www.googleapis.com/auth/bigquery 以及适用于 GCS 的存储作用域)
  • 仓库 路径:存储表的 GCS 存储桶 (以及可选前缀) ,例如 gs://your-bucketgs://your-bucket/prefix

在 Lakehouse 运行时目录与 ClickHouse 之间建立连接

完成 OAuth 凭证配置后,在 ClickHouse 中创建一个使用 DataLakeCatalog 数据库引擎的数据库:

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 运行时目录中的表

创建连接后,您可以查询已注册到 Lakehouse 运行时目录中的表。

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 运行时目录表中的数据加载到本地 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