选型

Iceberg

你可能会说

数据湖里的文件越来越多,怎么当表用?

给数据湖加表语义的开放表格式在对象存储上管理 schema、分区和快照,支持时间旅行与并发写;Spark / Flink / Trino 都能读同一份数据。
也常被叫作湖仓一体表格式
先问一句数据湖要 ACID 和时间旅行?
默认Iceberg→擅长快照 + schema 演进→别用小规模单机
成熟度采用

什么时候选它

  • 数据湖 / 湖仓一体
  • 多引擎共享同一份数据
  • 需要 schema 演进、时间旅行、增量读

什么时候别选

  • 小规模数据(普通表就够)
  • 团队没有湖仓运维经验
  • 需要极低延迟点查(还要配查询引擎)
容易混在一起 · 怎么分
Iceberg≠Hive 表

Iceberg 有原子提交、快照、schema 演进;Hive 表靠目录约定,重命名和并发写容易出错。

Iceberg≠Delta Lake

两者都提供 ACID 表格式;Iceberg 引擎中立、分区演进更灵活,Delta 与 Spark 结合更紧。

Q面试会问什么

  • 问:和 Hive 表的区别?
    答:元数据存在清单文件里而不是目录结构,提交是原子的,支持快照和隐藏分区。
  • 问:时间旅行怎么实现?
    答:每次提交生成新 snapshot,读旧 snapshot 的清单文件就是历史数据;过期清理控制保留。
延伸阅读 · 权威出处