0
点赞
收藏
分享

微信扫一扫

什么是 Hudi Timeline (时间线)

青鸾惊鸿 2022-03-11 阅读 76

Timeline

不同时刻对表的所有操作都被 Hudi 维护在一条时间线上,这有助于提供表的瞬时的视图查询,同时还能根据数据的到达顺序支持高校的数据检索服务。Hudi instant 核心概念包含以下几点:

  • Instant action (瞬时动作):动作的类型
  • Instant time (瞬时时间):是一个时间戳(如:20190117010349),单调递增
  • Instant state (瞬时状态):instant 的当前状态

基于 instant time, Hudi 可保证时间线之上的操作是具有原子性和一致性的。

Instant action (瞬时动作)

Hudi Instant action (瞬时动作) 主要有以下几种:

  • COMMITS - commit 表明一批数据原子写入到表中
  • CLEANS - 后台进程,清理不再需要的旧版本数据
  • DELTA_COMMIT - delta commit 表明一批数据原子写入MergeOnRead 类型的表中的 delta logs文件。
  • COMPACTION - 后台进程,把行存的数据合并到列存格式文件,是一种特殊的 commit
  • ROLLBACK - 表明 commit/delta commit 失败并回滚,删除不完整的文件
  • SAVEPOINT - 对文件标记为“saved”,清理程序就不会删除这些文件,在遇到故障或者数据需要修复时,可以把表恢复到时间线的这个保存点

Instant state (瞬时状态)

任何给定的 instant 都有可能是以下的其中一种状态:

  • REQUESTED - 表明 Instant action 已在排队中,但还没有初始化
  • INFLIGHT - 表明 Instant action 正在执行中
  • COMPLETED - 表明 Instant action 上时间线执行完毕

Timeline 的例子

在这里插入图片描述

上图的例子展示了10:00至10:20,每5分钟在 Hudi 表的 upsert 操作,时间线有 commit,clean 和 compact。同时还可以观察到 commit time 记录的是数据到达时间(如,10:20AM),而实际是按 event time (事件时间) 从7:00每小时一个分区来组织数据的。到达时间和事件事件是平衡数据延迟及完整性的两个主要概念。

迟到的数据到来(如,事件时间是9:00,在>1小时之后的10:20到达),会根据事件数据写入到对应的分区。在时间线的帮助下,增量查询只需要读取所有在某一瞬间(instant time)以来 commit 成功的变更文件就可以获取到新数据,而不通过扫描所有的文件。

举报

相关推荐

0 条评论