如何理解Flink窗口语义?

时间:2015-07-20 07:01:44

标签: apache-flink

任何人都可以帮我回答一个问题:如果有5s时间窗口每2秒执行一次聚合操作。前2个在n和n + 5之间处理窗口中的数据,而第二个2s在n + 2和n + 7之间的窗口中处理数据。似乎Flink在n + 2到n + 5的时间内重复工作。是那个吗?任何帮助都会很感激!

2 个答案:

答案 0 :(得分:3)

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

通常,如果幻灯片大小和窗口大小具有最大公约数(GCD),则更容易考虑窗口。此外,使用基于窗格的方法可以更快地评估窗口。

答案 1 :(得分:1)

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