本文主要是介绍Flink实战案例(二十一):自定义时间和窗口的操作符(二)KeyedProcessFunction(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
KeyedProcessFunction
KeyedProcessFunction用来操作KeyedStream。KeyedProcessFunction会处理流的每一个元素,输出为0个、1个或者多个元素。所有的Process Function都继承自RichFunction接口,所以都有open()、close()和getRuntimeContext()等方法。而KeyedProcessFunction[KEY, IN, OUT]还额外提供了两个方法:
- processElement(v: IN, ctx: Context, out: Collector[OUT]), 流中的每一个元素都会调用这个方法,调用结果将会放在Collector数据类型中输出。Context可以访问元素的时间戳,元素的key,以及TimerService时间服务。Context还可以将结果输出到别的流(side outputs)。
- onTimer(timestamp: Long, ctx: OnTimerContext, out: Collector[OUT])是一个回调函数。当之前注册的定时器触发时调用。参数timestamp为定时器所设定的触发的时间戳。Collector为输出结果的集合。OnTimerContext和processElement的Context参数一样,提供了上下文的一些信息,例如firing trigger的时间信息(事件时间或者处理时间)。
时间服务和定时器
Context和OnTimerContext所持有的TimerService对象拥有
这篇关于Flink实战案例(二十一):自定义时间和窗口的操作符(二)KeyedProcessFunction(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!