当前位置:   article > 正文

Flink实现准确和高效流处理的关键问题

Flink实现准确和高效流处理的关键问题

时间相关:
时间相关

Watermark 水位线

  • 水位线是插入到数据流中的一个标记,可以认为是一个特殊的数据。
  • 水位线主要的内容是一个时间戳,用来表示当前事件时间的进展
  • 水位线是基于数据的时间戳生成的。
  • 水位线的时间戳必须单调递增,以确保任务的事件时间时钟一直向前推进,进展
  • 水位线可以通过设置延迟,来保证正确处理乱序数据。
  • 一个水位线 Watermark(t),表示在当前流中事件时间已经达到了时间戳 t,这代表 t之前的所有数据都到齐了,之后流中不会出现时间戳 t‘ ≤ t 的数据。

Watermark 多并行度下的生成、传递

生成:
  • 间歇性更新(punctuated watermarks):
    遇到新事件后更新

With punctuated watermarks, Flink calls checkAndGetWatermark() on each new event, i.e. right after calling assignWatermark(). An actual watermark is emitted only if checkAndGetWatermark() returns a non-null value which is greater than the last watermark.
来自stackoverflow回答

  • 周期性更新
    定期更新

With periodic watermarks, Flink calls getCurrentWatermark() at regular interval, independently of the stream of events.

设置周期性更新的时间

// 设置Watermar
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/779494
    推荐阅读
    相关标签
      

    闽ICP备14008679号