Apache flink 扩展窗口

Apache flink 扩展窗口,apache-flink,flink-streaming,windowing,Apache Flink,Flink Streaming,Windowing,我有一个总是一个应用程序,监听卡夫卡流,处理事件。事件是会话的一部分。我需要根据会话数据进行计算。由于会话的长度,我在尝试正确运行计算时遇到了问题。我90%的课程在5分钟后完成。99%在1小时后完成。会话可能持续一天以上,由于这是一个实时系统,因此没有确定的结束。会话是唯一的,并且显示从不冲突 我正在寻找一种方法,可以多次处理一个窗口,或者使用初始等待期并在此之后处理任何后续事件,或者使用每个事件类型结构的纯过程。我需要保留所有以前的事件(ListState),以及以前处理过的值(ValueSt

我有一个总是一个应用程序,监听卡夫卡流,处理事件。事件是会话的一部分。我需要根据会话数据进行计算。由于会话的长度,我在尝试正确运行计算时遇到了问题。我90%的课程在5分钟后完成。99%在1小时后完成。会话可能持续一天以上,由于这是一个实时系统,因此没有确定的结束。会话是唯一的,并且显示从不冲突

我正在寻找一种方法,可以多次处理一个窗口,或者使用初始等待期并在此之后处理任何后续事件,或者使用每个事件类型结构的纯过程。我需要保留所有以前的事件(ListState),以及以前处理过的值(ValueState)

我以前认为
allowedLateness
会允许我这样做,但似乎只有在应该处理事件时才考虑延迟,它不会扩展实际窗口
GlobalWindows
也可以工作,但我不确定是否有办法多次处理一个窗口。我相信我可以使用
逐出器
GlobalWindows
在一段时间的不活动后清除窗口(尽管承认,我还没有对此进行研究,因为我不确定如何多次触发
GlobalWindow

如果您能就如何实现我期望的目标提出任何建议,我将不胜感激,我也很乐意澄清所需的任何要点。

如果您无法完成这项工作,那么您可以使用带有自定义
触发器的
GlobalWindows
逐出器
。触发器接口有一个基于元素和计时器的回调,可以您可以在任何时候和任何频率重新创建元素。如果您遵循此路线,那么是的,您还需要实现一个逐出器,以便在不再需要元素时对其进行处理


当试图理解这两者是如何结合在一起时,和很有帮助。

您如何区分会话?您查看过会话窗口吗?