我有以下用例,对不起,如果有一个明显的解决方案,但我对Flink还是陌生的:
应该基于事件时间将流中的事件(包含感兴趣的值)分配给窗口。就我而言,事件不仅会乱序到达,而且事件也会被版本化。我的意思是,对于给定的事件时间,可能会发生两个事件。在这种情况下,窗口应再次触发。这些事件到来之间的时间可能是几天(甚至几周)。我已经找到了允许的Windows延迟选项。这是一个可能的解决方案,还是会导致很多无法丢弃的窗口,因为另一个事件可能仍会到达(基本上归结为问题,如果窗口是持久的还是保留在内存中)。
谢谢
答案 0 :(得分:0)
通常,为了避免保持无限量的状态,需要允许的延迟是有限的。但是您可以将Flink配置为使用RocksDBStateBackend,这会将状态溢出到磁盘,并允许与本地磁盘可以容纳的状态一样多的状态。
如果非常晚的事件很少发生,那么您最好以某种特殊的方式来容纳它们,而不是让通用管道负担所有状态的开销。