Flink - 异步 windows

Flink - asynchronous windows

这是一个关于 flink 流的两个问题主题,基于我自己做的实验,我需要一些说明。问题是:

  1. 当我们在flink的KeyedStream上使用windows时,apply函数的计算是异步的吗?具体来说,flink 会为每个键创建单独的 windows 并相互独立地处理这些 windows 吗?

  2. 假设我们在窗口流上使用应用函数(做一些计算),然后创建一个 DataStream。如果我们对结果 DataStream 做一些转换,flink 会把整个 WindowedStream 保存在内存中吗?并且 flink 会等到 WindowedStream 的所有应用函数都完成,然后继续对结果流进行转换吗?

在我所做的所有实验中,我都使用事件时间并从文件中读取数据。我在实验中观察到上述陈述,我需要一些澄清。

广告。 1 是的,每个密钥都是独立处理的。这也是 windows 计算并行化的方式。

Ad.2 Flink 将保持 windows 状态,直到可以发出 window(加上一些额外的时间以防 allowedLateness)。一旦 window 的结果发出(在您的情况下转发给下一个操作员),就可以清除状态。