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

Flink翻滚窗口延迟触发getResult与AscendingTimestampExtractor

司空和悌
2023-03-14

我正在使用翻滚窗口(5分钟)和AscendingTimestampExtractor,因为我的源代码来自Kafka。但是窗口总是运行超过5分钟。有人能建议吗?

共有1个答案

曾嘉言
2023-03-14

让我们想象一下,我们正在讨论9:00到9:04.999之间的时间间隔。通过处理时间窗口,当一天的时间达到9:05时,窗口将被触发。

既然您提到了AscendingTimestampExtractor水印赋值器,我假设您使用的是事件时间窗口(而不是处理时间窗口)。当你说窗口运行时间超过5分钟时,我想你的意思是,结果不会在9:05立即产生。

在事件时间窗口的情况下,9:05关闭的窗口将等待至少9:05的水印。这样的水印必须等待时间戳至少为9:05的事件,这意味着无论您的事件经历何种延迟,窗口触发都会延迟。

其中一些延迟是由于Flink Kafka消费者摄取事件之前的管道部分。Flink会导致一些额外的延迟:特别是自动水印间隔(默认为200毫秒)和网络缓冲(默认为100毫秒)可能会产生明显的影响。

请注意,如果您使用keyBy操作并行管道,那么速度最慢的Kafka消费者将阻止所有人使用他们的水印。如果使用逐分区水印,则最慢的分区将确定整个水印。

 类似资料:
  • 使用翻滚窗口的apache flink应用程序遇到问题。窗口大小是10秒,我希望每隔10秒有一个resultSet数据流。然而,当最新窗口的结果集总是延迟时,除非我将更多数据推送到源流。 例如,如果我在“01:33:40.0”和“01:34:00.0”之间将多条记录推送到源流,然后停止查看日志,则不会发生任何事情。 我在“01:37:XX”上再次推送一些数据,然后将在“01:33:40.0”和“0

  • 我正在尝试在我的Flink作业中使用事件时间,并使用来提取时间戳并生成水印。但是我有一些输入Kafka具有稀疏流,它可以长时间没有数据,这使得中的根本没有调用。我可以看到数据进入函数。 我已经设置了getEnv()。getConfig()。设置自动水印间隔(1000L) 我尝试过 还有会话窗口 所有的水印都显示没有水印,我怎么能让Flink忽略这个没有水印的东西呢?

  • 问题陈述:来自kafka源的流式事件。这些事件有效载荷为字符串格式。将它们解析为文档,并根据事件时间每隔5秒将其批量插入DB。 函数正在执行。但程序控制不会进入。因此不会发生批量插入。我尝试了键控和非键控窗口。它们都不工作。没有抛出错误。 flink版本:1.15.0 下面是我的主要方法的代码。我应该如何解决这个问题?

  • 我有一个使用flink应用程序的场景,该应用程序接收以下格式的数据流: {“event\u id”:“c1s2s34”,“event\u create\u timestamp”:“2019-03-07 11:11:23”,“amount”:“104.67”} 我使用下面的滚动窗口来查找过去60秒内输入流的总和、计数和平均值。 键值。时间窗口(时间秒(60)) 然而,我如何标记聚合结果,以便我可以说

  • 我有flink stream,我在某个时间窗口上计算一些事情,比如说30秒。 这里发生的事情是,它给我的结果,我以前的窗口聚合以及。 假设前30秒我得到结果10。 接下来的三十秒我想要新的结果,而不是我得到最后一个窗口的结果新的等等。 因此,我的问题是如何为每个窗口获得新的结果。

  • 我有以下用例,如果有明显的解决方案,很抱歉,但我对Flink非常陌生: 谢谢