Nessie 目录
与 Nessie Catalog 的集成仅与 Iceberg 表兼容。 该集成支持 AWS S3 及其他云存储提供商。
ClickHouse 支持与多个目录(Unity、Glue、REST、Polaris 等)的集成。本指南将指导您如何使用 ClickHouse 与Nessie目录查询数据。
Nessie 是一个开源的事务性目录,适用于数据湖,提供:
- 受 Git 启发的 数据版本控制,具有分支和提交功能
- 跨表事务和可见性保证
- 与 Iceberg REST 目录规范兼容的 REST API
- 开放数据湖方法,支持 Hive、Spark、Dremio、Trino 等
- 生产就绪的 Docker 或 Kubernetes 部署
由于此功能为实验性,您需要通过以下方式启用它:
SET allow_experimental_database_iceberg = 1;
本地开发设置
对于本地开发和测试,您可以使用容器化的 Nessie 设置。这种方法非常适合学习、原型开发和开发环境。
先决条件
- Docker 和 Docker Compose:确保已安装并正在运行 Docker
- 示例设置:您可以使用官方的 Nessie docker-compose 设置
设置本地 Nessie 目录
您可以使用官方的 Nessie docker-compose 设置,该设置提供了一个完整的环境,包括 Nessie、内存版本库和用于对象存储的 MinIO。
步骤 1: 创建一个新的文件夹以运行示例,然后创建一个文件 docker-compose.yml,配置如下:
步骤 2: 运行以下命令以启动服务:
步骤 3: 等待所有服务准备就绪。您可以检查日志:
Nessie 设置使用内存版本库,要求首先将示例数据加载到 Iceberg 表中。在通过 ClickHouse 尝试查询它们之前,请确保环境已经创建并填充了表。
连接到本地 Nessie 目录
连接到您的 ClickHouse 容器:
然后创建到 Nessie 目录的数据库连接:
使用 ClickHouse 查询 Nessie 目录表
现在连接已建立,您可以开始通过 Nessie 目录进行查询。例如:
如果您的设置包括示例数据(例如出租车数据集),您应该会看到如下表:
如果您没有看到任何表,通常意味着:
- 环境尚未创建示例表
- Nessie 目录服务尚未完全初始化
- 示例数据加载过程尚未完成
您可以检查 Nessie 日志以查看目录活动:
要查询表(如果可用):
需要反引号,因为 ClickHouse 不支持多个命名空间。
要检查表的 DDL:
从数据湖将数据加载到 ClickHouse
如果您需要从 Nessie 目录将数据加载到 ClickHouse,请首先创建一个本地 ClickHouse 表:
然后通过 INSERT INTO SELECT 从 Nessie 目录表加载数据: