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

如果Flink的keyBy操作符被赋予不同的键,然后是滚动窗口,会发生什么

岳城
2023-03-14

我的flink作业有keyBy操作符,它将date~clientID(date为yyyymmddhmm,MM为5分钟后更改的分钟)作为键。这个操作员之后是5分钟的翻滚窗口。我们的Kafka输入平均为每分钟300万个事件,在峰值时间大约为每分钟2000万个事件。检查点持续时间和两次检查点之间的最小暂停时间为3分钟。

现在我的疑虑是:

1)keyBy创建的状态是永久保持还是在5分钟后被驱逐。

5)我每隔5-6小时就会遇到一次异常,这会重新启动flink作业。TimerException{java.nio.channels.closedByInterruptException}在org.apache.flink.streaming.runtime.tasks.SystemProcessingTimeService$TriggerTask。

共有1个答案

戚森
2023-03-14

几点:

keyBy不是运算符,也没有状态。keyBy只是声明了如何重新分区流。紧跟在keyBy后面的滚动窗口确实有状态,一旦窗口完成,它就会被清除。如果您查看web UI的checkpoint stats部分中的细分,就可以看到每个子任务有多少状态。

这里有一个例子:

你知不知道一次有多少个不同的时间框架是活动的?例如,12:00-12:05的窗口将接收许多时间戳在12:00-12:05范围内的事件,加上一些11:55-12:00在12:00之前未到达的事件。和更早时间范围的事件,如果有可能延迟的话。如果不理解活动键空间是什么样子,很难考虑键偏斜。

 类似资料:
  • 如果我们打印newString,这里会发生什么,我们知道输出将仅为JAVA8,但第2行在堆或常量池中创建了新对象。它在内部的行为如何

  • 我要求澄清Apache Flink(1.6.0)在事件通过窗口发送并应用了一些运算符(如减少()或过程())后,如何处理来自KeyedStreams的事件。 假设一个单节点集群,在执行键控窗口流上的一个操作符后,剩下的是正好1个数据流还是正好k个数据流(其中k是键的唯一值的数量)? 为了澄清,考虑需要从某个源读取事件,通过一些K键,将键事件发送到一些窗口流,减少,然后做几乎任何其他事情。下面两个图

  • 我有一个由两个字段“键控”的记录流,然后分配一个间隔为30秒的会话窗口。我使用附加在记录上的“时间戳”作为事件时间。我正在使用“Assign AscendingTimeStamps”水印。 以下面的记录为例。该流由(用户,place)键控。 Record1:user1,place1,timestamp t1 Record2:user2,place1,timestamp在t1之后30秒 桶1 Rec

  • 我有这个脚本: HTML中的用法: 由于某些原因,它的工作,如果页面重新加载一半,但不,它没有开火,在它工作之前,所以我不知道发生了什么。我在wordpress网站上使用这个。

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

  • 当我使用 flink 事件时间窗口时,窗口只是不触发。如何解决问题,有没有办法调试?