数据湖三剑客:Delta Lake、Hudi 与 Iceberg 详解 | 青训营笔记

145 阅读2分钟

数据湖三剑客:Delta Lake、Hudi 与 Iceberg 详解

这是我参与「第四届青训营 」笔记创作活动的第4天

数据湖的发展

1. 最初概念 —— 分布式存储HDFS

image.png

缺点:

image.png 导致数据沼泽

2. Hive

image.png

对数据湖中的数据集进行 集中定义

缺点:

image.png

1. 读取到的文件不同
2. 不方便删除数据

3. 湖仓一体

image.png

湖仓一体的优势和特点:

image.png

小结

数据湖的概念很新,目前还在一直演进中,没有权威的定义

核心技术

文件结构

image.png

Time Travel

image.png

Transaction【事务】—— ACID

image.png

如何达成ACID:

image.png

如何达成原子性:

image.png

1. 只读取以版本号数字命名的json文件(最大版本号)
2. 当commit完之后,才能读取新的写入
如何达成事务隔离:

image.png

Schema Evolution

image.png

  1. 新增列赋予新ID,删除过的ID不再用
  2. 将ID写入数据,用于判断数据版本

PS:

  • Data 是 parquet数据文件 —— 先写入
  • Metadata 是 Json 元数据文件 —— 后写入

三大数据湖的优劣

Iceberg

image.png

Layer

image.png

Data File Filter

image.png

image.png

Hudi

image.png

image.png

image.png

Delta Lake

image.png

流批一体

image.png

总结

image.png

image.png

技术选型

image.png

image.png

数据湖的发展

1. 最初概念 —— 分布式存储HDFS

image.png

缺点:

image.png 导致数据沼泽

2. Hive

image.png

对数据湖中的数据集进行 集中定义

缺点:

image.png

1. 读取到的文件不同
2. 不方便删除数据

3. 湖仓一体

image.png

湖仓一体的优势和特点:

image.png

小结

数据湖的概念很新,目前还在一直演进中,没有权威的定义

核心技术

文件结构

image.png

Time Travel

image.png

Transaction【事务】—— ACID

image.png

如何达成ACID:

image.png

如何达成原子性:

image.png

1. 只读取以版本号数字命名的json文件(最大版本号)
2. 当commit完之后,才能读取新的写入
如何达成事务隔离:

image.png

Schema Evolution

image.png

  1. 新增列赋予新ID,删除过的ID不再用
  2. 将ID写入数据,用于判断数据版本

PS:

  • Data 是 parquet数据文件 —— 先写入
  • Metadata 是 Json 元数据文件 —— 后写入

三大数据湖的优劣

Iceberg

image.png

Layer

image.png

Data File Filter

image.png

image.png

Hudi

image.png

image.png

image.png

Delta Lake

image.png

流批一体

image.png

总结

image.png

image.png

技术选型

image.png

image.png