如何理解 Flink Window 语义?

How to Understand Flink Window Semantics?

谁能帮我回答一下如果有5s的时间window每2s执行一次聚合操作。第一个 2s 处理 n 和 n+5 之间 window 中的数据,而第二个 2s 处理 n+2 和 n+7 之间 window 中的数据。看起来 Flink 在 n+2 到 n+5 的时间内做重复工作。是那个吗?任何帮助将不胜感激!

你是对的。如果你应用一个函数,它可能会重用第一个 window 的结果来计算第二个 window,目前 Flink 没有利用这个。每个 window 都是从头开始计算的。 (但是,此优化已列入开发议程,并将在未来的版本中得到支持。)

Flink处理的windows应该是(n, n+2), (n, n+4), (n+1, n+6), (n+3, n+8 ).所以一开始 windows 不是 5 秒宽。它必须 "catch up" 因为还没有足够的时间数据可用。 window 每两秒处理一次,它会查看从该点开始的最后 5 秒。

一般来说,如果幻灯片大小和 window 大小具有最大公约数 (GCD),则更容易考虑 windows。此外,windows 可以使用基于窗格的方法更快地进行评估。