官方参考
查询类型
- 快照查询(Snapshot Queries)
查询最新的数据。
- 增量查询(Incremental Queries)
查询指定时间范围内新增或修改的数据。
- 读优化查询(Read Optimized Queries)
仅查询 Parquet 格式的基础文件中的数据,为 MOR 表特有。
表类型 | 支持的查询类型 |
---|---|
COW | 快照查询、增量查询 |
MOR | 快照查询、增量查询、读优化查询 |
- 快照查询和读优化查询对比
对比项 | 快照查询 | 读优化查询 |
---|---|---|
数据延迟 | 低 | 高 |
查询延迟 | 高(需合并基础文件和增量的日志文件) | 低(只涉及基础文件) |
表类型
对比项 | COW | MOR |
---|---|---|
数据延迟 | 高 | 低 |
查询延迟 | 低 | 高 |
更新开销(I/O) | 高(重写整个 parquet 文件) | 低(追加写增量日志文件) |
Parquet 文件大小 | 小(高更新开销) | 大(低更新开销) |
写放大 | 高 | 低(依赖压缩策略) |
文件类型
- 基础文件(basefiles)
基础文件为列存储格式(parquet)的文件,可类比为 MySQL innodb 引擎的 idb 数据文件或者 Redis 的 RDB 文件(Redis 的 RDB 未含所有数据,MOR 表的也是,但 COW 表的包含所有数据)。
- 日志文件(logfiles)
日志文件是增量的(delta)只追加写的文件,可类比为 MySQL 的 binlog 文件或者 Redis 的 AOF 文件(实际为全量数据),为 MOR 表独有,为行存储格式(avro)文件。
COW 表 | MOR 表 | |
---|---|---|
基础文件 | 包含所有数据 | 仅包含压缩(Compaction)后的数据 |
日志文件 | 没有日志文件 | 每次新写入的都放在日志文件,通过压缩合并为基础文件,压缩可同步或者异步进行,或者周期性的进行 |
压缩(Compaction)
Hudi 的压缩是为解决日志文件过多问题,通过压缩合并日志文件,减少日志文件数量。压缩分为调度(schedule)和执行(run)两个步骤,压缩的方式分为同步和异步两种。
设置 hoodie.compact.inline 为 true 启用同步压缩,设置为 false 启用异步压缩,默认为 false 。hoodie.compact.inline.max.delta.commits 控制最近一次压缩后新产生多少个 commits 后启动压缩,而 hoodie.compact.inline.max.delta.seconds 则控制最近一次压缩后多久启动压缩,压缩策略通过 hoodie.compaction.strategy 指定。
设置 hoodie.compact.schedule.inline 为 true(默认为 false),则可在每次写完成后决定是否触发压缩。
设置 hoodie.compact.inline.trigger.strategy 控制压缩触发策略。
标签:文件,Hudi,MOR,压缩,查询,hoodie,类型,日志 From: https://www.cnblogs.com/aquester/p/17442937.html