我是Flink的新手。我有一个flink流媒体程序,该程序在10秒的会话Windows中计算出Kafka的内容。
这是我的问题:
会话窗口默认触发器是fire。
flink流将使每个窗口的所有kafka消息都保存在内存中?还是只保留聚合的结果。
如果我使用fire_and_purge,将清除什么?
在此处描述和清除,但简单地说,触发后fire_and_purge删除了窗口的内容。
Flink的所有内置窗口分配程序(包括会话窗口)在正确的时间(即在任何允许的迟到过期之后)清除其内容。但是清除是作为一个单独的步骤完成的,而不是与扳机发射结合。
Windows的内容保持在缩小状态,因此它们的位置取决于您正在使用哪种状态。如果您使用的是基于堆的状态后端,则该状态将保持在堆里,如果您使用的是RockSDB,则将保留在磁盘上。
您的窗户是否保留其完整内容,直到清除它们取决于您是否正在使用增量聚合 - 换句话说,如果您使用的是减少,聚合或折叠,则只有聚合的持续结果正在存储,否则是分配给窗口的所有事件的集合。