diff --git a/hudi/README.md b/hudi/README.md index f829823..2aa6623 100644 --- a/hudi/README.md +++ b/hudi/README.md @@ -80,13 +80,59 @@ State详细解释: - `INFLIGHT`: 表示当前正在执行操作 - `COMPLETED`: 表示在时间线上完成一项操作 -## 文件布局 +## 2.2 文件布局 - Hudi在分布式文件系统的基本路径下将数据表组织成目录结构。 - 一个表包含多个分区。 - 在每个分区里面,文件被分为文件组,由文件id作为唯一标识。 - 每个文件组当中包含多个文件切片。 -- +- 每个切片都包含一个在特定提交/压缩instant操作生成的基本文件(.parquet);日志文件(.log)这些文件包含自生成基本 +文件以来对基本文件的插入/更新。 + +Hudi采用多版本并发控制(MVCC),其中压缩操作合并日志和基本文件以生成新的文件切片,而清理操作清除未使用/旧的 +文件切片以回收文件系统上的空间。 + + +## 2.3 表&查询类型 + +|表类型 | 支持查询类型| +|---|---| +| Copy On Write | 快照查询 + 增量查询 | +| Merge On Read | 快照查询 + 增量查询 + 读取优化查询 | + +### 2.3.1 表类型 + +#### 2.3.1.1 Copy On Write + +使用排他列式文件格式(比如:parquet)存储,简单地更新版本&通过在写入期间执行同步合并来重写文件。 + + +#### 2.3.1.1 Merge On Read + +使用列式(比如:parquet) + 基于行的文件格式 (比如:avro) 组合存储数据。更新记录到增量文件中,然后压缩以同步或 +异步生成新版本的柱状文件。 + +| 对比维度 | CopyOnWrite | MergeOnRead | +|---|---|---| +| 数据延迟 | Higher | Lower | +| 查询延迟 | Lower | Higher | +| 更新成本(I/O) | Higher(需要重写parquet) | Lower(添加到delta log) | +| Parquet文件大小 | Smaller(高更新(I/O)成本) | Larger(低更新成本) | +| 写入放大 | Higher | Lower(取决于压缩策略)| + + +### 2.3.2 查询类型 + +#### 2.3.2.1 快照查询 +查看给定提交或压缩操作的表的最新快照。 + + +#### 2.3.2.2 增量查询 + + + +#### 2.3.2.3 读优化查询 + # 3. Hudi 数据管理