首页/数据/数仓建模速查/表格式对比:Iceberg/Hudi/Paimon/Delta
湖仓与引擎63 条

表格式对比:Iceberg/Hudi/Paimon/Delta

四种湖表格式定位不同:Iceberg 引擎中立、Hudi 偏增量与更新、Paimon 偏流式实时、Delta 与 Spark 生态紧密;选择以现有引擎栈为主。

数仓建模速查数据更新于 2026-10-13

四种开放表格式是什么

Iceberg、Hudi、Paimon、Delta 都属于开放表格式:在 Parquet/ORC 文件之上加一层事务日志与元数据,让对象存储上的数据具备 ACID 提交、快照回看、模式演进和小文件合并能力。四者的差异在于侧重:Iceberg 强调引擎中立与表结构演进,Hudi 强调按主键 upsert 与时间线增量读,Paimon 面向流式湖仓并支持主键表与变更日志,Delta 与 Spark 生态结合最紧密。选型的现实依据是现有引擎栈和写入形态,而不是纸面功能多少。

基本信息

适用平台对象存储或 HDFS 之上,由 Spark、Flink、Trino 等引擎读写
Iceberg 侧重多引擎共享、隐藏分区、模式与分区演进、快照隔离
Hudi 侧重按主键 upsert、时间线增量读、COW 与 MOR 两种表
Paimon 侧重流式湖仓、LSM 主键表、可产生 changelog 供下游消费
Delta 侧重事务日志 _delta_log、与 Spark 生态深度集成
共性能力ACID 提交、时间旅行、模式演进、小文件合并
目录服务Hive Metastore、REST Catalog 或文件系统清单,跨引擎访问依赖它
选择依据现有引擎栈、写入是流式还是批量、是否多引擎共享

典型使用场景

  • 多引擎读同一份数据(Spark 加工、Trino 即席、Flink 实时)时优先 Iceberg,避免为每个引擎复制一份
  • CDC 数据按主键 upsert 落地并支持下游按提交时刻增量拉取,选 Hudi 或 Paimon
  • 以 Flink 流式链路为主、需要主键表与变更日志下游消费,选 Paimon
  • 链路本来就以 Spark 批处理为核心,选 Delta 上手成本最低
  • 要求数据可迁移、不愿被单一引擎绑定,用 Iceberg 这类元数据自描述的格式

存储布局差异

存储布局差异
# 同一张订单表在不同格式下的目录与元数据位置
iceberg: s3://lake/db.db/trade_order/data/dt=2026-10-12/x.parquet  # 数据与元数据分离,metadata 下存快照
hudi:    s3://lake/trade_order/dt=2026-10-12/part-*.parquet        # 表根目录的 .hoodie 存时间线
paimon:  s3://lake/warehouse/db.db/trade_order/dt=2026-10-12/bucket-0/  # LSM 结构,含变更日志
 delta:   s3://lake/trade_order/_delta_log/00000000000000000010.json    # 每次提交一个日志文件

# 读取方式举例:同一份数据用不同引擎
SELECT count(*) FROM demo.db.trade_order WHERE dt = DATE '2026-10-12';  # Iceberg / Delta 通用写法

四种格式逐项对照

格式侧重适配引擎
Iceberg多引擎共享、结构与分区演进Spark/Flink/Trino
Hudi按主键 upsert、时间线增量Spark/Flink
Paimon流式湖仓、主键表与变更日志Flink/Spark
Delta事务日志、Spark 生态一体以 Spark 为主
格式切换意味着重写数据与作业,尽量在项目早期定下来,并把目录约定、表命名、元数据服务地址沉淀成团队规范,避免每个项目各自选型。
不要在同一批数据上混用多种格式。治理规则、权限模型与统计口径都无法统一,排障时也很难判断当前生效的是哪一套元数据。

易错点

  • 同一批数据混用三种格式:权限与治理难以统一,血缘与口径出现分歧
  • 按引擎偏好而非数据形态选型:后期迁移要重写作业并重灌全量数据
  • 忽略小文件治理:任何格式在频繁小批写入后都会产生小文件,缺少 compaction 策略查询会持续变慢
  • 元数据服务未提前规划:跨引擎访问受限,只能回退到单引擎读写
  • 把时间旅行的保留策略当成备份方案:快照过期后历史版本无法访问

数据来源与参考

  • Apache Iceberg 官方文档:Introduction
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌