Apache Hudi Timeline

        Timeline | Apache Hudi

        Hudi维护了在不同时刻在表上执行的所有操作的时间线,这有助于提供表的即时视图,同时也有效地支持按到达顺序检索数据。Hudi的核心是维护表上在不同的即时时间(instants)执行的所有操作的时间轴(timeline),这有助于提供表的即时视图,同时还有效地支持按到达顺序检索数据。一个instant由以下三个部分组成:

  • 即时操作:对表格执行的操作类型
  • 即时时间:即时时间通常是一个时间戳(例如:20190117010349),它按照动作开始时间的顺序单调增加。
  • state:当前状态

Hudi保证在时间线上执行的操作是原子的,并且基于即时时间的时间线是一致的。

执行的关键行动包括

  • COMMITS-提交表示将一批记录原子写入表。
  • CLEANS-清除表中不再需要的旧版本文件的后台活动。
  • DELTA_COMMIT-增量提交是指将一批记录原子写入MergeOnRead类型表,其中一些/所有数据可以直接写入增量日志。
  • 压缩-协调Hudi内部差异数据结构的后台活动,例如:将更新从基于行的日志文件移动到列格式。在内部,压缩表现为时间轴上的特殊提交
  • ROLLBACK-表示提交/增量提交不成功并回滚,删除在写入过程中生成的任何部分文件
  • SAVEPOINT-将某些文件组标记为“已保存”,这样清洁器不会删除它们。它有助于在发生灾难/数据恢复情况时将表恢复到时间线上的某个点。

任何给定的瞬间都可以处于以下状态之一

  • REQUESTED-表示已计划但尚未启动的操作;
  • INFLIGHT-表示当前正在执行操作;
  • COMPLETED-表示时间线上某项操作的完成。

        上图中采用时间(小时)作为分区字段,从 10:00 开始陆续产生各种 commits,10:20 来了一条 9:00 的数据,根据event time该数据仍然可以落到 9:00 对应的分区,通过 timeline 直接消费 10:00 (commit time)之后的增量更新(只消费有新 commits 的 group),那么这条延迟的数据仍然可以被消费到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值