窗口函数之全窗口函数
本文重点
在前面课程中我们学习了如何通过Flink来定义窗口,窗口定义完毕之后,一旦达到窗口关闭的条件,就会触发窗口计算了,此时就需要执行窗口函数了。本文我们学习窗口函数的其中一种类型——全窗口函数。
全窗口函数
全窗口函数:WindowFunction 和 ProcessWindowFunction
流中每来一条数据就会收集起来,不会进行计算,只有等到要输出结果的时候才会取出数据进行计算。全局函数的优势是可以获取到一些上下文信息。
窗口函数(WindowFunction)
我们可以基于WindowedStream调用.apply()方法,传入一个WindowFunction的实现类。
public interface WindowFunction<IN, OUT, KEY, W extends Window> extends Function,
Serializable {
void apply(KEY key, W window, Iterable<IN> input, Collector<OUT> out) throws
Exception;
}
当窗口到达结束时间需要触发计算时,就会调用这里的apply方法。我们可以从input集合中取出窗口收集的数据,通过收集器out输出结果,一般不常用。
处理窗口函数(ProcessWindowFunction)
Window API 中最底层的通用窗口函数接口就是ProcessWindowFunction,它可以拿到一个上下文对象Context,