前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flink1.4 事件时间与Watermarks

Flink1.4 事件时间与Watermarks

作者头像
smartsi
发布2019-08-07 09:00:12
5190
发布2019-08-07 09:00:12
举报
文章被收录于专栏:SmartSiSmartSi

1. watermark

Flink实现了数据流模型(Dataflow Model)中许多技术。如果想对事件时间(event time)和watermarks更详细的了解,请参阅下面的文章:

支持事件时间的流处理器需要一种方法来衡量事件时间的进度。例如,一个构建小时窗口的窗口算子(operator),当事件时间超过一小时末尾时需要告知窗口算子,以便算子可以关闭正在进行的窗口。

事件时间可以独立于处理时间来运行。例如,在一个程序中,算子的当前事件时间可以略微落后于处理时间(考虑到接收事件的延迟),而两者以相同的速度继续运行。另一方面,另一个流式处理程序处理几个星期的事件时间只需几秒钟就可以,通过快速浏览缓存在Kafka Topic中历史数据。

Flink中测量事件时间进度的机制是watermarkswatermarks会作为数据流的一部分进行流动,并带有一个时间戳tWatermark(t)表示数据流中的事件时间已达到时间t,意思就是说数据流之后不再有时间戳t‘<= t的元素(即带时间戳的事件老于或等于watermark)。

下图显示了具有时间戳(逻辑上)的事件流以及内嵌的watermark。在这个例子中,事件是有序的(相对于它们的时间戳),这意味着watermark只是数据流中的周期性标记。

watermark对于乱序数据流至关重要,如下图所示,事件并未按照时间戳进行排序。通常,watermark表示在数据流中那个时刻小于时间戳的所有事件都已经到达。一旦watermark到达算子,算子就可以将其内部的事件时间提到watermark的那个值。

2. 数据流中的并行Watermarks

watermarks是直接通过数据源函数(source functions)生成的或在数据源函数之后生成的。源函数的每个并行子任务通常独立生成watermarks。这些watermarks在指定并行数据源上定义事件时间。

watermarks贯穿整个流处理程序,他们会在watermark到达的算子时将事件时间提前(advance)。每当算子提前事件时间时,它都会为下游的后续算子生成一个新的watermarks(Whenever an operator advances its event time, it generates a new watermark downstream for its successor operators.)。

一些算子消耗多个输入流;例如,union操作,或者算子后面跟着keyBy(...)函数或者partition(...)函数。这样的算子的当前事件时间是其输入流的所有事件时间中的最小值。随着输入流更新事件时间,算子也会更新事件。

下图显示了事件和watermarks流经并行流的的示例,以及跟踪事件时间的算子:

3. 延迟元素

某些元素可能违反watermarks条件,这意味着即使出现watermarks(t),但是还是会出现很多的时间戳t'<= t的元素。事实上,在现实世界中,某些元素可能被任意地延迟,因此指定一个时间,带有事件时间戳的所有事件在此之前出现是不可能的。此外,即使延迟时间是有限制的,也不希望延迟太多的watermarks,因为它会在事件时间窗口的评估中导致太多的延迟。

因此,流处理程序中可能会明确的知道会有延迟元素。延迟元素是那些系统事件时钟(由watermark所示)已经超过了延迟元素的时间戳的那些元素。有关如何处理事件时间窗口中的延迟元素的更多信息,请参阅Allowed Lateness

4. 调试Watermarks

请参阅调试Windows和事件时间部分,以便在运行时调试Watermarks。

备注:

代码语言:javascript
复制
Flink版本:1.4
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. watermark
  • 2. 数据流中的并行Watermarks
  • 3. 延迟元素
  • 4. 调试Watermarks
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档