没有合适的资源?快使用搜索试试~ 我知道了~
【Flink篇08】Flink之ProcessFunctionAPI1
需积分: 0 0 下载量 138 浏览量
2022-08-04
16:25:06
上传
评论
收藏 413KB PDF 举报
温馨提示
试读
4页
人生没有彩排,每天都是现场直播Flink之ProcessFunctionAPI之前学习的转换算子是无法访问事件的时间戳信息和水位线信息的。Process Fun
资源详情
资源评论
资源推荐
人生没有彩排,每天都是现场直播
Flink之ProcessFunctionAPI
之前学习的转换算子是无法访问事件的时间戳信息和水位线信息的。而这在一些应用场景下,
极为重要。例如MapFunction这样的map转换算子就无法访问时间戳或者当前事件的事件时间。
基于此,DataStream API提供了一系列的Low-Level转换算子。可以访问时间戳、watermark以及注
册定时事件。还可以输出特定的一些事件,例如超时事件等。Process Function用来构建事件驱动的应
用以及实现自定义的业务逻辑(使用之前的window函数和转换算子无法实现)。例如,Flink SQL就是使
用Process Function实现的。
Flink提供了8个Process Function:
ProcessFunction
KeyedProcessFunction
CoProcessFunction
ProcessJoinFunction
BroadcastProcessFunction
KeyedBroadcastProcessFunction
ProcessWindowFunction
ProcessAllWindowFunction
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
参数一样,提供了上下文的一些信息,例如定时器触发的时间信息(事件时间或者处理时
间)。
TimerService 和 定时器(Timers)
Context和OnTimerContext所持有的TimerService对象拥有以下方法:
currentProcessingTime(): Long 返回当前处理时间
焦虑肇事者
- 粉丝: 58
- 资源: 310
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0