CodeWalk

Iceberg/Delta Lake/Hudi三剑客对比

作者:专业代码师 · 2026-05-30 12:55

请对比三大数据湖框架(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(写优化好)