Flink的Window类型
Flink基本分有3种window类型:CountWindow,TimeWindow和SessionWindow。
其中,CountWindow和TimeWindow还有滑动与滚动区分。
通常,window的api定义形式为:
stream
.keyBy(...)
.window(...) // timeWindow,countWindow,SessionWindows.withGap(Time.minutes(10))
[.trigger(...)]
[.evictor(...)]
[.allowedLateness()]
.reduce/fold/apply()
窗口函数有哪些
定义完窗口分配器后,需要指定在每个窗口上执行的计算,这就是窗口函数的职责。
在了解有哪些窗口函数之前,有必要了解Window的聚合分类:
全量聚合:简单点说是等属于窗口的数据到齐之后,才开始进行聚合计算;即全量聚合在未触发之前,会保存之前的状态,在最后窗口触发时,才会进行计算。(所以全量聚合的压力会很大。)
常见的窗口函数:
apply(WindowFunction) --- 不过1.3之后被弃用
process(processWindowFunction)
增量聚合:窗口每进入一条数据,就进行一次计算。
reduce(reduceFunction)ÿ