我正在使用 apache 梁来编写一些流式传输管道。我的用例的一个要求是我想相对于窗口开始或结束时间每 X 分钟触发一次。我怎么能做到这一点。当前触发器 AfterProcessingTime.pastFirstElementInPane() 与该窗口中第一个元素的处理时间有关。
例如,我创建了固定的 1 分钟窗口,所以我有 window_1(0-1 分钟间隔)、window_2(1 - 2 分钟间隔)等等。现在我希望每个窗口的结果在窗口开始后 10 分钟后恰好触发一次,即 window_1 在 0 + 10 -> 10 分钟,window_2 在第 11 分钟 (1 + 10)。[注意:我将固定窗口配置为允许延迟 > 10 分钟,因此如果延迟,元素不会被丢弃]
有没有办法为固定窗口实现这种触发。
我不能只是将所有元素分配给一个全局窗口,然后每分钟重复触发一次,因为这样它会丢失所有元素窗口时间信息。例如,如果我的 pcollection 中有 2 个元素属于 window_1 和 window_2 基于那里的事件时间戳,但延迟了 3 和 3.2 分钟。将它们分配给全局窗口将在第 4 分钟结束时生成一些输出,同时考虑到这两个元素,而实际上我希望将它们分配给实际的固定窗口(作为后期数据)。
我希望根据那里的事件时间戳将元素分配给 window_1 和 window_2,然后 window_1 在第 10 分钟触发输出结果,方法是仅处理该窗口的 1 个延迟数据,然后在第 11 分钟触发 window_2 并在处理唯一的元素后输出延迟了 3.2 分钟。在我的流媒体管道中实现这种行为的触发器设置应该是什么。