Lakekeeper Catalog
与 Lakekeeper Catalog 的集成目前仅适用于 Iceberg 表。 此集成同时支持 AWS S3 和其他云存储提供商。
ClickHouse 支持与多个目录服务集成(Unity、Glue、REST、Polaris 等)。本指南将介绍如何使用 ClickHouse 和 Lakekeeper catalog 来查询数据。
Lakekeeper 是一个面向 Apache Iceberg 的开源 REST catalog 实现,提供:
- Rust 原生 实现,具有高性能和高可靠性
- REST API,遵循 Iceberg REST catalog 规范
- 与 云存储 集成,支持兼容 S3 的存储
由于该功能仍为实验性特性,需要先通过以下命令启用:
SET allow_experimental_database_iceberg = 1;
本地开发环境设置
在进行本地开发和测试时,你可以使用容器化的 Lakekeeper 环境。此方式非常适合用于学习、原型验证和开发环境。
先决条件
- Docker 和 Docker Compose:确保已安装并正在运行 Docker 和 Docker Compose
- 示例环境:可以使用 Lakekeeper 的 docker-compose 配置
在本地设置 Lakekeeper Catalog
可以使用官方提供的 Lakekeeper docker-compose 配置,该配置提供了一个完整的环境,包括 Lakekeeper、用作元数据后端的 PostgreSQL,以及用于对象存储的 MinIO。
步骤 1: 新建一个用于运行该示例的文件夹,然后创建一个名为 docker-compose.yml 的文件,并填入以下配置:
步骤 2: 运行以下命令来启动服务:
步骤 3: 等待所有服务准备就绪。您可以通过查看日志来检查:
Lakekeeper 的部署要求必须先将样例数据加载到 Iceberg 表中。请确保在通过 ClickHouse 查询这些表之前,环境中已经创建并填充好这些表。表是否可用取决于具体的 docker-compose 配置和样例数据加载脚本。
连接到本地 Lakekeeper 目录
连接到 ClickHouse 容器:
然后创建与 Lakekeeper 目录的数据库连接:
使用 ClickHouse 查询 Lakekeeper 目录表
现在连接已经建立,你可以开始通过 Lakekeeper 目录来查询数据。例如:
如果你的部署中包含示例数据(例如 taxi 数据集),应该会看到如下这些表:
如果你没有看到任何表,通常意味着:
- 该环境尚未创建示例表
- Lakekeeper 目录服务尚未完全初始化
- 示例数据的加载过程尚未完成
你可以查看 Spark 日志以了解表创建的进度:
查询表(如果存在):
需要使用反引号,因为 ClickHouse 不支持多个命名空间。
要查看该表的 DDL:
将数据湖中的数据加载到 ClickHouse
如需将 Lakekeeper 目录中的数据加载到 ClickHouse,请先创建一个本地 ClickHouse 表:
然后通过执行 INSERT INTO SELECT 语句,从你的 Lakekeeper 目录表中加载数据: