Skip to main content
ClickHouse 可通过 Horizon 提供的 Iceberg REST API (基于 Apache Polaris) 连接到 Snowflake Horizon Catalog。 借助 DataLakeCatalog 数据库引擎以及 catalog_type = 'horizon',您可以从 ClickHouse 读取和写入由 Snowflake 管理的 Iceberg 表。 Horizon 与 Snowflake Open Catalog / 自托管 Polaris 相关,但并不相同:
此功能目前处于 Beta 阶段,请通过以下命令启用: SET allow_experimental_database_iceberg = 1; (或者,根据您的 ClickHouse 版本,使用 SET allow_database_iceberg = 1;。)

前置条件

  • 拥有 Snowflake 托管的 Iceberg 表的 Snowflake 账户
  • Horizon Iceberg REST 端点: https://<organization>-<account>.snowflakecomputing.com/polaris/api/catalog
  • 对 Iceberg 表具有相应特权的 Snowflake 角色 (如需执行 INSERT,还应具有写入特权)
  • 采用以下任一方式进行身份验证:
    • 编程访问令牌 (PAT)
    • 用于换取访问令牌的密钥对 JWT
    • 外部 OAuth 访问令牌 (作为 Bearer auth_header)
  • 可供 ClickHouse 访问的对象存储 (建议使用下发的凭据)
  • 支持 DataLakeCatalog Iceberg 的 ClickHouse

创建连接

warehouse 必须是 Snowflake 数据库名称 (而不是 Snowflake 虚拟仓库) 。 未加引号的 Snowflake 标识符均为大写。

选项 B:预先换取的 Bearer 访问令牌

查询 Iceberg 表

命名空间 (schema) 和表通常以 `SCHEMA.table` 的形式引用,除非 已启用 Experimental 表命名空间。

写入路径

拥有 INSERT/UPDATE/DELETE 权限 (创建表时还需 CREATE ICEBERG TABLE 权限) 的角色 可以让 ClickHouse 通过同一目录写入:
具体的 CREATE TABLE 语法取决于您所用版本中 ClickHouse Iceberg / DataLakeCatalog 对 REST 目录写入的支持;Snowflake 的权限问题会表现为目录 HTTP 错误。

加载到 MergeTree

最后修改于 2026年8月26日