1、hudi表类型
表类型 | 支持的查询方式 | 数据存储格式 |
Copy on Write (写时复制) | 快照查询+增量查询 | 全量和增量数据均存储为列式parquet格式 |
Merge on Read (读时合并) | 快照查询+增量查询+读取优化查询(近实时) | 全量数据存储为列式parquet数据,增量数据存储为行式arvo格式 |
下面总结了两种表类型之间的权衡
权衡 | CopyOnWrite | MergeOnRead |
数据延迟 | 高 | 低 |
查询延迟 | 低 | 高 |
Update(I/O) 更新成本 | 高(重写整个Parquet文件) | 低(追加到增量日志) |
Parquet File Size | 低(更新成本I/O高) | 较大(低更新成本) |
Write Amplification(WA写入放大) | 大 | 低(取决于压缩策略) |
2、两种表类型的选择
Copy on write由于具有低的查询延迟所以比较适合应用在ADS层,merge On read由于具有低的更新成本所以在处理拉链表等需要频繁更新的表时具有优势。
3、查询方式
- 快照查询:可以读取到读优化的列式数据和写优化的行式数据
- 增量查询:只能读取最新快照和最新合并的快照部分
- 读优化视图:仅提供compaction后的列式存储的数据