Skip to main content
与 Nessie Catalog 的集成仅适用于 Iceberg 表。 此集成同时支持 AWS S3 和其他云存储提供商。
ClickHouse 支持与多个目录 (Unity、Glue、REST、Polaris 等) 集成。本指南将逐步介绍如何使用 ClickHouse 和 Nessie 目录查询您的数据。 Nessie 是一个面向数据湖的开源事务目录,提供:
  • 受 Git 启发的 数据版本控制,支持分支和提交
  • 跨表事务 和可见性保证
  • REST API,符合 Iceberg REST catalog 规范
  • 开放数据湖 方法,支持 Hive、Spark、Dremio、Trino 等
  • 适用于生产环境的 Docker 或 Kubernetes 部署
由于此功能处于 Experimental 阶段,您需要通过以下命令启用: SET allow_experimental_database_iceberg = 1;

本地开发环境设置

对于本地开发和测试,你可以使用容器化的 Nessie 配置。这种方式非常适合用于学习、原型设计和开发环境。

前置条件

  1. Docker and Docker Compose:确保已安装 Docker,且其正在运行
  2. 示例设置:你可以使用官方的 Nessie docker-compose 配置

配置本地 Nessie Catalog

你可以使用官方的 Nessie docker-compose setup,它提供了一个包含 Nessie、内存版本存储以及用于对象存储的 MinIO 在内的完整环境。 步骤 1: 创建一个新文件夹来运行此示例,然后创建一个名为 docker-compose.yml 的文件,内容如下:
**步骤 2:**运行以下命令以启动相关服务:
步骤 3: 等待所有服务准备就绪。你可以查看日志:
Nessie 配置使用内存中的版本存储,并且要求先将样本数据加载到 Iceberg 表中。在尝试通过 ClickHouse 查询这些表之前,请确保环境已完成这些表的创建并已填充数据。

连接到本地 Nessie Catalog

连接到您的 ClickHouse 容器:
然后创建与 Nessie Catalog 的数据库连接:

使用 ClickHouse 查询 Nessie Catalog 中的表

现在连接已建立,您可以开始通过 Nessie Catalog 执行查询。例如:
如果你的环境中包含示例数据 (例如出租车数据集) ,你应该会看到如下表:
如果你没有看到任何表,通常说明:
  1. 环境尚未创建示例表
  2. Nessie Catalog 服务尚未完全初始化
  3. 示例数据加载过程尚未完成
你可以查看 Nessie 日志,了解 catalog 的活动情况:
要查询表 (如果可用) :
必须使用反引号必须使用反引号,因为 ClickHouse 不支持使用多个命名空间。
要查看该表的 DDL:

将您的数据湖中的数据加载到 ClickHouse

如果您需要将 Nessie Catalog 中的数据加载到 ClickHouse,请先创建一个本地 ClickHouse 表:
然后通过 INSERT INTO SELECT 从您的 Nessie Catalog 表中导入数据:
最后修改于 2026年7月24日