Iceberg/Delta Lake/Hudi三剑客对比
请对比三大数据湖框架(Apache Iceberg/Delta Lake/Apache Hudi)的核心特性、技术架构和选型建议。
回答
专业代码师
一、核心特性对比: | 维度 | Iceberg | Delta Lake | Hudi | |------|---------|-----------|------| | 创始团队 | Netflix | Databricks | Uber | | 表格式 | 开放规范(Apache项目) | 开源但Databricks主导 | Apache项目 | | ACID | 支持(快照隔离) | 支持(乐观并发) | 支持(MVCC) | | Time Travel | 支持(snapshotId) | 支持(versionAsOf) | 支持(commit time) | | Schema Evolution | 支持(加/删/改/重命名) | 支持 | 支持 | | Hidden Partition | 支持(分区自动转换) | 不支持 | 部分支持 | | Merge-on-Read | 支持(v2格式) | 不支持 | 核心特性 | | Compaction | 手动/自动 | 自动(Optimize) | 内建(Inline/Async) |
二、技术差异:
Iceberg:
- 表元数据层:
Catalog→Metadata File→Manifest List→Manifest File→Data File - 设计哲学:开放和标准化(REST Catalog/统一的表格式)
- 亮点:Hidden Partition(自动分区裁剪)、V2格式的Row-Level Delete
Delta Lake:
- 用Transaction Log(
_delta_log目录下的JSON文件) 记录所有变更 - 内置Schema Enforcement(写入校验)
- 与Spark深度集成(Databricks亲儿子)
- 亮点:Z-Order优化(多维聚类)
Hudi:
- 支持Copy-on-Write(COW) 和Merge-on-Read(MOR) 两种存储类型
- 内建增量查询(增量拉取Changed Data)
- 适合CDC和增量ETL场景
三、选型建议:
- 多引擎/开放生态→ Iceberg(Spark/Flink/Trino/Presto全覆盖)
- Spark/ML主导→ Delta Lake
- CDC/增量摄取→ Hudi(MOR写入好)
- Flink为主→ Iceberg(Flink集成最好)
- 实时入湖→ Hudi(写优化好)