这是我参与「第四届青训营 」笔记创作活动的的第8天
数据湖
-
数据仓库的主流定义是位于多个数据库上的大容量存储库,它的作用在于存储大量的结构化数据,为管理分析和业务决策提供统一的数据支持,存取过程相对比较繁琐,对于数据类型有一定限制,
-
数据仓库的主流定义是位于多个数据库上的大容量存储库,它的作用在于存储大量的结构化数据,为管理分析和业务决策提供统一的数据支持,虽然存取过程相对比较繁琐,对于数据类型有一定限制。
-
湖仓一体是一种结合了数据湖和数据仓库优势的新范式,在用于数据湖的低成本存储上,实现与数据仓库中类似的数据结构和数据管理功能。湖仓一体是一种更开放的新型架构,有人把它做了一个比喻,就类似于在湖边搭建了很多小房子,有的负责数据分析,有的运转机器学习,有的来检索音视频等,至于那些数据源流,都可以从数据湖里轻松获取。
-
这里需要注意的是,“湖仓一体”并不等同于“数据湖”+“数据仓”
核心数据
ACID
原子性
- 写入流程
- 写入parquet数据文件
- 写入json元数据文件
- 确保原子性
- 用户只会读取已版本号数字命名的json文件
- 写写一个json文件,对写好的文件使用HDFS的rename
事务隔离
- Update写入流程
- 从最新的版本中,获取需要update的分区
- 乐观锁把该写入的文件全落盘,然后进入写json阶段
- 发现版本号和一开始没区别,直接开始写新的版本
- 发现版本号增加了,查看新增的版本分区有没有我更新的分区
- 有,
- 没有,
Schema Evolution
- ID将data和metadata的列名做一一对应
- 唯一确定的ID,新增赋予新的ID。删列ID不复用
- 写入数据时,ID写入数据文件
Merge On Read
- MOR
- 在读的时候根据版本合并
- COW
- 写时复制
Delta Lake 工作重点
- ACID Transaction
- Schema校验
- 流批一体
技术选型
- 强需求upserts——Hudi
- 可扩展性——Iceberg
- Z-Order优化,Delta Lake