Apache flink 弗林克第一窗口射击

Apache flink 弗林克第一窗口射击,apache-flink,Apache Flink,假设窗口大小为10秒,水印间隔为1秒,松弛时间为5秒 (例如,使用boundedAutofordernessTimestampExtractor),当应用程序首次启动时,这是否意味着第一个窗口要到15秒才会触发(以考虑窗口处理中包含的所有事件的5秒延迟) 另外,窗口是按历元间隔触发的,这又是如何工作的呢?当足够大的水印到达窗口时,第一个窗口将触发,而这与应用程序运行的时间无关。让我们考虑几个例子: (1) 如果您正在处理历史数据,那么仔细检查足够的数据以触发第一个窗口可能只需要几分之一毫秒 (2

假设窗口大小为10秒,水印间隔为1秒,松弛时间为5秒 (例如,使用
boundedAutofordernessTimestampExtractor
),当应用程序首次启动时,这是否意味着第一个窗口要到15秒才会触发(以考虑窗口处理中包含的所有事件的5秒延迟)


另外,窗口是按历元间隔触发的,这又是如何工作的呢?

当足够大的水印到达窗口时,第一个窗口将触发,而这与应用程序运行的时间无关。让我们考虑几个例子:

(1) 如果您正在处理历史数据,那么仔细检查足够的数据以触发第一个窗口可能只需要几分之一毫秒

(2) 另一方面,如果数据源变为空闲,则时间戳(和水印)可能永远不会前进到足以触发第一个窗口的程度。“为什么我的窗口永远不会产生任何结果?”是一个常见的堆栈溢出问题

但是,是的,如果您正在对连续的实时数据流进行事件时处理,那么第一个窗口将在应用程序启动后大约5到15秒之间触发。窗口将与历元对齐,因此第一个窗口的结束时间将在应用程序启动后10秒内的任何位置,生成水印大约还需要5秒。(我之所以说“大致”,是因为在这个场景中,我们将事件时间和处理时间混合在一起,而这无法确定地完成。)