REST Catalog
与 REST 目录的集成仅适用于 Iceberg 表。 此集成支持 AWS S3 和其他云存储提供商。
ClickHouse 支持与多个目录的集成(Unity、Glue、REST、Polaris 等)。本指南将引导您通过使用 ClickHouse 和 REST Catalog 规范查询您的数据。
REST Catalog 是 Iceberg 目录的标准化 API 规范,支持多个平台,包括:
- 本地开发环境(使用 docker-compose 设置)
- 托管服务 如 Tabular.io
- 自托管的 REST 目录实现
由于此功能处于实验阶段,您需要使用以下命令启用它:
SET allow_experimental_database_iceberg = 1;
本地开发设置
对于本地开发和测试,您可以使用容器化的 REST 目录设置。这种方法非常适合学习、原型设计和开发环境。
先决条件
- Docker 和 Docker Compose:确保 Docker 已安装并正在运行
- 示例设置:您可以使用各种 docker-compose 设置(请参阅下面的替代 Docker 镜像)
设置本地 REST 目录
您可以使用各种容器化的 REST 目录实现,例如 Databricks docker-spark-iceberg,该实现提供了一个完整的 Spark + Iceberg + REST 目录环境,适合使用 docker-compose 测试 Iceberg 集成。
步骤 1: 在运行示例的文件夹中创建一个新文件夹,然后创建一个名为 docker-compose.yml 的文件,并使用 Databricks docker-spark-iceberg 的配置。
步骤 2: 接下来,创建一个名为 docker-compose.override.yml 的文件,并将以下 ClickHouse 容器配置放入其中:
步骤 3: 运行以下命令以启动服务:
步骤 4: 等待所有服务准备好。您可以检查日志:
REST 目录设置需要首先加载示例数据到 Iceberg 表中。在尝试通过 ClickHouse 查询它们之前,请确保 Spark 环境已创建并填充了表。表的可用性取决于特定的 docker-compose 设置和示例数据加载脚本。
连接到本地 REST 目录
连接到您的 ClickHouse 容器:
然后创建到 REST 目录的数据库连接:
使用 ClickHouse 查询 REST 目录表
现在连接已建立,您可以开始通过 REST 目录进行查询。例如:
如果您的设置包含示例数据(例如出租车数据集),您应该能够看到如下表格:
如果您未看到任何表,这通常意味着:
- Spark 环境尚未创建示例表
- REST 目录服务尚未完全初始化
- 示例数据加载过程尚未完成
您可以检查 Spark 日志以查看表创建进度:
要查询表(如果可用):
需要反引号,因为 ClickHouse 不支持多个命名空间。
要检查表 DDL:
从数据湖加载数据到 ClickHouse
如果您需要将数据从 REST 目录加载到 ClickHouse,请首先创建一个本地 ClickHouse 表:
然后通过 INSERT INTO SELECT 从您的 REST 目录表加载数据: