这是我参与「第四届青训营 」笔记创作活动的第11天
数据湖三剑客:Delta Lake、Hudi 与 Iceberg 详解|青训营笔记
发展历史
- Hadoop
- Hive
- 湖仓一体
核心技术
文件结构
- 写入数据湖时:
- 按照每条数据的date进行分区
- 额外使用metadate文件记录表信息
Time travel
- 每一次写入操作,创建一个新的json文件,以递增版本号命名,记录本次新增/删除的文件。
- 每当产生N个json,做一次聚合,记录完整的分区文件信息
- 用checkpoint记录上次做聚合的版本号
Transaction
ACID,是指数据库在写入或更新资料的过程中,为保证事务是正确可靠的,所必须具备的四个特性。
- 以A给B转账10元为例:
- Atomicity: 原子性--要么A-10 B+10,要么都不变
- Consistency:一致性--不可以A-10 B+5
- Isolation: 事务隔离--A和C同时给B转10,B最终结果应是+20
- Durability: 持久性--转账服务器重启,结果不变
数据湖中的 ACID:
- Atomicity: 原子性- 本次写入要么对用户可见,要么不可见(需要设计)
- Consistency: 一致性-输入是什么,落盘的就是什么(由计算引擎保证)
- lsolation: 事务隔离-正确解决读写冲突和写写冲突(需要设计) 4.Durability: 持久性-落完数据后,即便服务器重启结果不变(由存储引擎保证)
各有所长
iceberg工作重点
- 用户体验:
- Schema evolution
- Partiyion evolution
- Hidden partition
- Time Travel
- Version Rollback
- 性能
- 快速file plan
- 更多的filter方式
- 可靠性
- ACID Transaction