事件分散的flink中水印的正确管理方法

ecfsfe2w  于 2021-07-15  发布在  Flink
关注(0)|答案(1)|浏览(341)

我正在处理来自物联网设备的事件流。
这些事件具有由网络设置的第一级时间戳。他们还把在不同时间点采取的几项措施放在一起。例如:
网络时间9:08
8:52测量m1
9:07测量m2
每小时汇总一次测量值,在这种情况下,m1应在8:00-9:00的窗口中,m2应在9:00-10:00的窗口中。
我想知道什么是正确的方式来设计我的flink应用程序,管理这些时间戳,以及相关的水印。据我目前所知:
我可能应该把所有与网络时间(9:08)相关的处理放在一个单独的flink应用程序中。
有一个flink应用程序处理的措施后,他们被解包(皮瓣Map)。然后用 assignTimestampsAndWatermarks() ,对吗?我应该使用什么策略,因为两个措施之间存在着1500万的价差?

不,我不能改变物联网设备
pps:我计划使用emr,所以flink1.11,如果它对设计有任何影响的话。

am46iovg

am46iovg1#

通常,对于无序事件流,您希望使用有界有序水印策略,其持续时间足以覆盖预期的无序性。所以至少15分钟,在这种情况下。
如果您正在聚合每小时的窗口,那么这应该是非常可行的——假设您可以容忍等到每小时结束后15分钟才能看到任何结果。如果可以对窗口结果进行增量聚合(通过 reduce 或者 aggregate )这样会更有效率。

相关问题