当前位置: 首页 > 知识库问答 >
问题:

事件在时间上分散的闪烁水印管理方法

易研
2023-03-14

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

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

  • 网络时间9:08

度量值将按小时汇总,在这种情况下,M1应在8:00-9:00窗口中,M2应在9:00-10:00窗口中。

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

  • 我可能应该将所有与网络时间(9:08)相关的处理放在一个单独的Flink应用程序中。
  • 让Flink应用程序在它们被解压后处理度量值(翻盖映射)。然后用赋值时间戳和水印()分配时间戳,对吗?考虑到同时到来的度量值之间有15mn的差距,我应该使用什么策略?

--

PS:不,我不能更改物联网设备

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

共有1个答案

澹台庆
2023-03-14

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

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

 类似资料:
  • 我正在阅读《Stream Processing with Apache Flink》一书,书中说:“从版本0.10.0开始,Kafka支持消息时间戳。当从Kafka版本0.10或更高版本读取时,如果应用程序以事件时间模式运行,使用者将自动提取消息时间戳作为事件时间戳*“因此在函数中,调用将默认返回Kafka消息时间戳?请提供一个简单的示例,说明如何实现AssignerWithPeriodicalW

  • 我对Flink在事件时间上加水印时如何处理后期元素有些困惑。 现在我认识到这是一个微不足道的例子,但不理解这会使理解更复杂的流变得困难。

  • 我正在运行一个简单的示例来测试基于EventTime的Windows。我能够生成带有处理时间的输出,但当我使用EventTime时,没有输出。请帮助我明白我做错了什么。

  • 我有一个flink任务,它使用带事件时间和水印的键控翻滚窗口来聚合数据。 我的问题是,flink是否保持着他已经关闭的窗口的状态?否则,我没有其他解释为什么属于以前从未打开过的窗口的事件会打开一个窗口而不会立即删除它。 假设我们的窗口是1小时,禁止自动关闭是10分钟 让我们举个例子: event1=("2022-01-01T08:25:00Z")= event2=("2022-01-01T09:2

  • 最近我阅读了关于水印的Flink官方文件。 网址:https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/event_time.html 有两幅图片说明了flink水印机制,这让我困惑不解: Flink水印 第一张图片很容易理解,但是在第二张图片中,我想知道我们如何得到w(11)和w(17)?众所周知,我们可以在flink作业

  • 我试图使用process函数对一组事件进行处理。我正在使用事件时间和键控流。我面临的问题是,水印值始终为9223372036854725808。我已经对print语句进行了调试,它显示如下: 时间戳------1583128014000提取时间戳1583128014000当前水印------9223372036854775808 时间戳------1583128048000提取时间戳1583128