自定义UDF和窗口
普通UDF
Flink暴露了所有udf函数的接口(实现方式为接口或者抽象类)。例如MapFunction, FilterFunction, ProcessFunction等等。我们可以对这些函数进行自定义,继承这个类,重写其中的方法即可.
富函数
相比于普通的UDF,富函数实际上提供了额外的open方法和close提供给用户做初始化和清理的操作.另外,getRuntimeContext()方法提供了函数的RuntimeContext的一些信息,例如函数执行的并行度,当前子任务的索引,当前子任务的名字。同时还它还包含了访问分区状态的方法。
窗口
窗口(window)就是将无限流切割为有限流的一种方式,它会将流数据分发到有限大小的桶(bucket)中进行分析,flink中有两种窗口,时间窗口和计数窗口.
事件窗口就是按照事件戳划分的窗口包括滑动窗口,滚动窗口和会话窗口
滚动窗口
将数据依据固定的窗口长度对数据进行切分,时间对齐,窗口长度固定,没有重叠.一个event只能在一个窗口之中. timeWindow(Senconds(5))
滑动窗口
包括滑动步长和窗口大小,窗口长度固定,可以有重叠.timeWindow(Senconds(5),senconds(10))
会话窗口
flink独有,由一系列事件组合一个指定时间长度的 timeout 间隙组成,也就是一段时间没有接收到新数据就会生成新的窗口.即一个窗口中相邻的两个事件的时间戳小于timeout.
计数窗口
包括滚动计数和滑动计数,和时间的概率类似,
窗口函数
window function 定义了要对窗口中收集的数据做的计算操作.包括增量函数和全量函数,增量函数是来一条数据就做一个运算ReduceFunction, AggregateFunction,全量就是等一个窗口的数据收集完成统一计算ProcessWindowFunction.