谁能帮我回答这个问题,如果有一个5s的时间窗口每隔2s执行聚合操作。第一个2s处理n和n+5之间的窗口中的数据,第二个2s处理n+2和n+7之间的窗口中的数据。Flink似乎在n+2到n+5的时间内完成了重复工作。是吗?任何帮助将是感激的!
Flink处理的窗口应该是(n, n+2), (n, n+4), (n+1, n+6), (n+3, n+8)。所以一开始窗户的宽度不是5秒。它必须"迎头赶上",因为目前还没有足够的时间数据。该窗口每两秒处理一次,并从该点开始查看最近5秒。
一般来说,如果幻灯片大小和窗口大小具有最大公约数(GCD),则更容易考虑窗口。此外,使用基于窗格的方法,可以更快地评估窗口。
你是对的。如果您应用一个函数,可能会重用第一个窗口的结果来计算第二个窗口,目前Flink没有利用这一点。每个窗口都是从头开始计算的。(然而,这个优化已经在开发日程上,并将在未来的版本中得到支持。)