我正在处理来自物联网设备的事件流。
这些事件具有由网络设置的第一级时间戳。他们还把在不同时间点采取的几项措施放在一起。例如:
网络时间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,如果它对设计有任何影响的话。
1条答案
按热度按时间am46iovg1#
通常,对于无序事件流,您希望使用有界有序水印策略,其持续时间足以覆盖预期的无序性。所以至少15分钟,在这种情况下。
如果您正在聚合每小时的窗口,那么这应该是非常可行的——假设您可以容忍等到每小时结束后15分钟才能看到任何结果。如果可以对窗口结果进行增量聚合(通过
reduce
或者aggregate
)这样会更有效率。