Iceberg
你可能会说
数据湖里的文件越来越多,怎么当表用?
给数据湖加表语义的开放表格式在对象存储上管理 schema、分区和快照,支持时间旅行与并发写;Spark / Flink / Trino 都能读同一份数据。
也常被叫作湖仓一体表格式
什么时候选它
- 数据湖 / 湖仓一体
- 多引擎共享同一份数据
- 需要 schema 演进、时间旅行、增量读
什么时候别选
- 小规模数据(普通表就够)
- 团队没有湖仓运维经验
- 需要极低延迟点查(还要配查询引擎)
容易混在一起 · 怎么分
Iceberg≠Hive 表
Iceberg 有原子提交、快照、schema 演进;Hive 表靠目录约定,重命名和并发写容易出错。
Iceberg≠Delta Lake
两者都提供 ACID 表格式;Iceberg 引擎中立、分区演进更灵活,Delta 与 Spark 结合更紧。
Q面试会问什么
- 问:和 Hive 表的区别?
答:元数据存在清单文件里而不是目录结构,提交是原子的,支持快照和隐藏分区。 - 问:时间旅行怎么实现?
答:每次提交生成新 snapshot,读旧 snapshot 的清单文件就是历史数据;过期清理控制保留。
延伸阅读 · 权威出处