Snapshot 读
读取所有partition 下每个FileGroup 最新的FileSlice中的文件,Copy On Write表读parquet文件,Merge On Read 表读parquet+log 文件
Incremantal 读
当前的Spark data source 可以指定消费起始和结束的commit时间,读取commit增量的数据集。但是内部的实现不够高效:拉取每个commit的全部目标文件再按照系统字段_hoodie_commit_time_apply 过滤条件
Streaming读
0.8.0版本的HudiFlink writer 支持实时的增量订阅,可用于同步CDC数据,日常的数据同步ETL pipeline。Flink 的streaming读做到了真正的流式读取,source 定期监控新增的改动文件,将读取任务下派给读task;
Compaction
1.没有base file:走copy on write insert流程,直接merge所有的logfile并写base file ;
2.有base file:走 copy on write upsert流程,先读log file 建index,再读base file ,最后读logfile写新的base file;
Flink 和spark streaming 的writer 都可以apply 异步的compaction策略,按照间隔commits数或者时间触发compatition 任务,在独立的pipeline中执行;