Flink Streaming:TriggerResult.FIRE和TriggerResult.FIRE_AND_PURGE之间的差异

问题描述 投票:1回答:1

我是Flink的新手。我有一个Flink流媒体程序,在10秒会话窗口中计算kafka的内容。

这是我的问题:

会话窗口默认触发器是FIRE。

Flink流式传输是否会将每个窗口的所有kafka消息保留在内存中?或者仅保留聚合的结果。

如果我使用FIRE_AND_PURGE,会清除什么?

apache-flink flink-streaming
1个回答
2
投票

here描述了射击和清除,但简单地说,不同之处在于FIRE_AND_PURGE在射击后移除了窗口的内容。

Flink的所有内置窗口分配器(包括会话窗口)都会在时机成熟时(即在任何允许的延迟到期之后)清除其内容。但是清除是作为单独的步骤完成的,而不是与触发器发射相结合。

Windows的内容保持Flink状态,因此它们的位置取决于您使用的状态后端。如果使用基于堆的状态后端,则此状态将保留在堆上;如果使用RocksDB,则将保留在磁盘上。

在清除窗口之前,您的窗口是否保留其全部内容取决于您是否使用增量聚合 - 换句话说,如果您使用reduce,aggregate或fold,那么只会存储聚合的持续结果,否则它是分配给窗口的所有事件的集合。

© www.soinside.com 2019 - 2024. All rights reserved.