Hudi概念

1 时间线

Hudi内部维护了一条在表上执行动作的时间线timeline。每个时刻instant提供表的一个即时视图,同时方便按照抵达顺序获取数据。

每个时刻包含以下组建:

  • Instant action : 执行动作类型
  • Instant time : 动作开始时间戳,如20190117010349
  • state : 当前状态

Hudi保证时间线上动作的原子性和时间一致性。

主要动作类型:

  • COMMITS 原子写
  • CLEANS -后台清理旧版本文件
  • DELTA_COMMIT 原子性、增量地写入 MergeOnRead表
  • COMPACTION 后台统一内部数据结构。内部通常在时间线上表示为一种特殊的提交。
  • ROLLBACK 回滚
  • SAVEPOINT 快照

状态:

  • REQUESTED 已调度动作,但尚未初始化
  • INFLIGHT 执行动作中
  • COMPLETED 完成执行动作

hudi_timeline.png

左侧方框表示插入更新的数据抵达时间在10:00-10:20之间。

下方流水线表示每各5分钟提交一次,期间伴有后台清理和压缩。左侧数据的提交时间是10:20。

中间的图示表示数据分桶从07:00开始,每小时分桶。

迟到的数据会增量更新到对应的数据分桶中,这样可以更加高效地查询数据。

参考资料