开放表格式支持
- Apache Iceberg
- Delta Lake
- Apache Hudi
- Apache Paimon
| 特性 | 状态 | 备注 |
|---|---|---|
| 存储后端 | ||
| AWS S3 | ✅ | 通过 icebergS3() 或 iceberg() 别名 |
| GCS | ✅ | 通过 icebergS3() 或 iceberg() 别名 |
| Azure Blob 存储 | ✅ | 通过 icebergAzure() |
| HDFS | ⚠️ | 通过 icebergHDFS()。已弃用。 |
| 本地文件系统 | ✅ | 通过 icebergLocal() |
| 访问方式 | ||
| 表函数 | ✅ | icebergS3(),针对不同后端提供相应变体 |
| 表引擎 | ✅ | IcebergS3,针对不同后端提供相应变体 |
| 集群分布式读取 | ✅ | icebergS3Cluster, icebergAzureCluster, icebergHDFSCluster |
| 命名集合 | ✅ | 定义命名集合 |
| 读取特性 | ||
| 读取支持 | ✅ | 完整支持 SELECT 以及所有 ClickHouse SQL 函数 |
| 分区裁剪 | ✅ | 参见 分区裁剪。 |
| 隐式分区 | ✅ | 支持基于 Iceberg transform 的分区 |
| 分区演进 | ✅ | 支持读取分区规范随时间变化的表 |
| schema 演进 | ✅ | 支持列的添加、删除和重排序。参见 Schema evolution。 |
| 类型提升 / 扩展 | ✅ | int → long, float → double, decimal(P,S) → decimal(P',S),其中 P’ > P。参见 Schema evolution。 |
| 时间旅行 / 快照 | ✅ | 通过 iceberg_timestamp_ms 或 iceberg_snapshot_id 设置。参见 Time travel。 |
| 位置删除 | ✅ | 参见 处理已删除行。 |
| 相等删除 | ✅ | 仅表引擎支持,自 v25.8+ 起。参见 处理已删除行。 |
| Merge-on-read | ⚠️ | 实验性。支持删除操作。 |
| 格式版本 | ⚠️ | 支持 v1 和 v2。不支持 v3。 |
| 列统计信息 | ✅ | |
| 布隆过滤器 / puffin 文件 | ❌ | 不支持 puffin 文件中的布隆过滤器索引 |
| 虚拟列 | ✅ | _path, _file, _size, _time, _etag。参见 虚拟列。 |
| 写入特性 | ||
| 创建表 | ✅ | 实验性。需要 allow_insert_into_iceberg = 1。自 v25.7+ 起支持。参见 创建表。 |
| INSERT | ✅ | 自 26.2 起为 Beta。需要 allow_insert_into_iceberg = 1。参见插入数据。 |
| DELETE | ✅ | Experimental。需要 allow_insert_into_iceberg = 1。通过 ALTER TABLE ... DELETE WHERE 实现。参见删除数据。 |
| ALTER TABLE (schema 变更) | ✅ | Experimental。需要 allow_insert_into_iceberg = 1。支持添加、删除、修改和重命名列。参见Schema 演进。 |
| Compaction | ⚠️ | Experimental。需要 allow_experimental_iceberg_compaction = 1。将位置删除文件合并整理到数据文件中。参见Compaction。不支持其他 Iceberg 合并整理操作。 |
| UPDATE / MERGE | ❌ | 不支持。参见 Compaction。 |
| Copy-on-write | ❌ | 不支持 |
| Expire snapshots | ❌ | 不支持 |
| Remove orphan files | ❌ | 不支持 |
| 写入分区 | ✅ | 支持。 |
| 修改分区 | ❌ | 不支持从 ClickHouse 更改分区方案。ClickHouse 可以向分区方案已演进的 Iceberg 表写入。 |
| 元数据 | ||
| 分支与标签 | ❌ | 不支持 Iceberg 分支/标签引用 |
| 元数据文件解析 | ✅ | 支持通过目录、简单目录列表、version-hint 和特定路径来解析元数据。可通过 iceberg_metadata_file_path 和 iceberg_metadata_table_uuid 配置。参见元数据文件解析。 |
| 数据缓存 | ✅ | 与 S3/Azure/HDFS 存储引擎采用相同机制。参见数据缓存。 |
| 元数据缓存 | ✅ | manifest 和元数据文件会缓存在内存中。默认通过 use_iceberg_metadata_files_cache 启用。参见元数据缓存。 |
目录支持
DataLakeCatalog 数据库引擎连接外部数据目录,并将该目录映射为一个 ClickHouse 数据库。注册在目录中的表会自动显示出来,并可使用标准 SQL 查询。
当前支持以下目录。有关完整的设置说明,请参阅各目录的参考指南。
| 目录 | 格式 | 读取 | 创建表 | INSERT | 参考指南 |
|---|---|---|---|---|---|
| AWS Glue Catalog | Iceberg | ✅ Beta | ❌ | ❌ | Glue 目录 指南 |
| BigLake Metastore | Iceberg | ✅ Beta | ❌ | ❌ | BigLake Metastore 指南 |
| Databricks Unity Catalog | Delta, Iceberg | ✅ Beta | ✅ Beta | ✅ Beta | Unity Catalog 指南 |
| Iceberg REST | Iceberg | ✅ Beta | ❌ | ❌ | REST 目录 指南 |
| Lakekeeper | Iceberg | ✅ Beta | ❌ | ❌ | Lakekeeper 目录 指南 |
| Project Nessie | Iceberg | ✅ Experimental | ❌ | ❌ | Nessie 目录 指南 |
| Microsoft OneLake | Iceberg | ✅ Beta | ✅ Beta | ✅ Beta | OneLake 目录 指南 |
INSERT INTO SELECT。若要将数据写回开放表格式,请按写入数据指南中的说明创建独立的 Iceberg 表。