Window(时间窗口)
Window是处理流数据的核心。 Window将流分解成有限大小的“桶”,让我们用来计算。 本节重点介绍如何在Flink中执行窗口。
窗口Flink程序的一般结构如下。 第一个片段指的是有Key的流,而第二个没有Key。 可以看出,唯一的区别是keyBy(...)调用Key和窗口(...),它成为非Key流的windowAll(...)。
Keyed Windows
stream
.keyBy(...) <- keyed versus non-keyed windows
.window(...) <- required: "assigner"
[.trigger(...)] <- optional: "trigger" (else default trigger)
[.evictor(...)] <- optional: "evictor" (else no evictor)
[.allowedLateness()] <- optional, else zero
.reduce/fold/apply() <- required: "function"
Non-Keyed Windows
stream
.windowAll(...) <- required: "assigner"
[.trigger(...)] <- optional: "trigger" (else default trigger)
[.evictor(...)] <- optional: "evictor" (else no evictor)
[.allowedLateness()] <- optional, else zero
.reduce/fold/apply() <- required: "function"