Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Polaris 目录

Beta 版功能

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/v1http://polaris:8181/api/catalog/v1/oauth/tokens)
  • Catalog 凭据 (client ID 和 client secret)
  • 您的 Polaris 实例的 OAuth 令牌 URI
  • 存储 Iceberg 数据的对象存储端点 (例如 S3)
  • ClickHouse 26.1+ 版本

对于 Open Catalog (Snowflake 托管的 Polaris 服务) ,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:

查询sql
USE polaris_catalog;
SHOW TABLES;

要查询某个表:

查询sql
SELECT count(*) FROM `polaris_db.my_iceberg_table`;

要查看表的 DDL:

SHOW CREATE TABLE `polaris_db.my_iceberg_table`;

将 Polaris 中的数据加载到 ClickHouse

要将 Polaris 中的数据加载到 ClickHouse 表中,请先按所需的 schema 创建目标表,然后从 Polaris 表中插入数据:

查询sql
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`;
Navigation