Hudi 的表类型和查询方式
表类型 | 支持的查询类型 |
---|
Copy On Write (写时复制,简称 cow) | 支持快照查询和增量查询 |
Merge On Read (写时复制,简称 mor) | 支持快照查询、增量查询、读优化查询 |
1. 表类型
- Copy On Write (写时复制,简称 cow) : 以 列式(e.g parquet) 格式存储数据,数据写入的时候同步合并历史数据。
- Merge On Read (读时合并,简称 mor): 结合列存(e.g parquet)和行存(e.g avro)方式来存储数据。增量的数据先以行存的方式存储数据,然后以同步或者异步的方式合并数据生成性的列存文件。
权衡 | CopyOnWrite | MergeOnRead |
---|
数据延迟 | 高 | 低 |
查询延迟 | 低 | 高 |
更新成本 | 高 ,需要重写整个 parquet 文件 | 低,append 方式写 增量文件 |
写放大 | 大 | 小,取决于合并策略 |
2. 查询类型
- Snapshot Queries (快照查询):可以查询到最近一次成功提交或者合并的快照数据。
- Incremental Queries (增量查询):可查询指定提交或者合并后新写入表的数据。
- Read Optimized Queries (读优化查询):仅限于 MergeOnRead 表,可以查询到列存文件的数据。
对于 MergeOnRead 表选择查询类型需做以下权衡:
权衡 | Snapshot Queries | Read Optimized Queries |
---|
数据延迟 | 低 | 高 |
查询延迟 | 高 | 低 |