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
创建连接
选项 A:程序化访问令牌 (推荐)
warehouse 必须是 Snowflake 数据库名称 (而不是 Snowflake 虚拟仓库) 。
未加引号的 Snowflake 标识符均为大写。
选项 B:预先换取的 Bearer 访问令牌
查询 Iceberg 表
命名空间 (schema) 和表通常以
`SCHEMA.table` 的形式引用,除非
已启用 Experimental 表命名空间。写入路径
CREATE TABLE 语法取决于您所用版本中 ClickHouse Iceberg / DataLakeCatalog 对 REST 目录写入的支持;Snowflake 的权限问题会表现为目录 HTTP 错误。