正确的方法来管理水印与时间分散的事件



我正在处理来自物联网设备的事件流。

这些事件具有由网络设置的第一级时间戳。他们还将在不同时间点采取的几项措施组合在一起。例如:

  • 网络时间9:08
  • 在8:52测量M1
  • 9:07测量M2

测量应每小时汇总一次,在这种情况下,M1应在8:00-9:00窗口进行,M2应在9:00-10:00窗口进行。

我想知道设计我的flink应用程序、管理这些时间戳和相关水印的正确方法是什么。根据我目前的理解:

  • 我可能应该把所有与网络时间(9:08(相关的处理放在一个单独的Flink应用程序中
  • 让Flink应用程序在它们被打开后处理度量(襟翼映射(。然后用assignTimestampsAndWatermarks()分配时间戳,对吗?考虑到同时采取的措施之间有1500万的差距,我应该使用什么策略

-

PS:不,我不能更改IOT设备

PPS:我计划使用EMR,所以如果它对设计有任何影响,请使用1.11。

通常,对于无序事件流,您希望使用有界有序水印策略,其持续时间足以覆盖预期的无序。在这种情况下,至少需要15分钟。

如果你正在聚合每小时窗口,这应该是非常可行的——假设你可以容忍在一小时结束后等待15分钟才能看到任何结果。如果您可以对窗口结果进行增量聚合(通过reduceaggregate(,则效率会高得多。

相关内容

  • 没有找到相关文章

最新更新