ProcessFunction可以获取到timestamp和watermark,可以注册定时器,指定某个时间点发生的操作,还可以输出侧输出流 2、ProcessFunction解析 所有的ProcessFunction都继承自RichFunction接口,所以都有open()、close()和getRuntimeContext()等 1、processElement 来一条数据调用一次,处理流中的每一个数据 publicabstractvoidprocess...
public abstract class ProcessFunction<I,O>extends AbstractRichFunction{private static finallongserialVersionUID=1L;public ProcessFunction(){}public abstract void processElement(I var1,ProcessFunction<I,O>.Contextvar2,Collector<O>var3)throws Exception;//定时器触发时执行的逻辑 当前不支持 public void on...
stream.process(newMyProcessFunction()) 新建MyProcessFunction类 自定义处理函数主要继承了ProcessFunction。有两个泛型类型参数:I 表示 Input,也就是输入的数据类型;O 表示 Output,也就是处理完成之后输出的数据类型publicclassMyProcessFunctionextendsProcessFunction<I, O>{//打开时处理@Overridepublicvoidopen(Configur...
ProcessWindowFunction ProcessAllWindowFunction 二、KeyedProcessFunction 2.1、概述 KeyedProcessFunction 用来操作 KeyedStream。KeyedProcessFunction 会处理流的每一个元素,输出为 0 个、1 个或者多个元素。所有的 Process Function 都继承自RichFunction 接口,所以都有 open()、close()和 getRuntimeContext()等方法。
processElement(): 处理元素, 输入数据值 value, 上下文 ctx, 以及“收集器”(Collector)out。 value: 当前流中的输入元素, 也就是正在处理的数据, 类型与流中数据类型一致。 ctx: 类型是 ProcessFunction 中定义的内部抽象类 Context public abstract class Context { ...
4.KeyedBroadcastProcessFunction 一.概述 在更底层,我们可以不定义任何具体的算子(比如 map,filter,或者 window),而只是提炼出一个统一的“处理”(process)操作——它是所有转换算子的一个概括性的表达,可以自定义处理逻辑,所以这一层接口就被叫作“处理函数”(process function)。
ProcessFunction 是flink 提供面向用户low-level 层级的api,通过ProcessFunction可以访问state、注册处理时间/事件时间定时器来帮助我们完成一些比较复杂的操作,但是其有一个限制那就是只用使用在keyedStream中,是由于根据getRuntimeContext 得到的StreamingRuntimeContext 只提供了KeyedStateStore的访问权限,所以只能访问keyd ...
importorg.apache.flink.streaming.api.functions.ProcessFunction.OnTimerContext;importorg.apache.flink.util.Collector;// 数据源DataStream<Tuple2<String,String>>stream=...;// 对KeyedStream应用ProcessFunctionDataStream<Tuple2<String,Long>>result=stream.keyBy(0).process(newCountWithTimeoutFunction());/**...
Process Function 处理函数(Process Function)是一个低级的流转换操作,相比MapFunction除了基本功能,还可以访问记录的时间戳和水位,并支持注册一个在将来某个特定时间触发的计时器,处理函数的侧输出功能还允许将记录发送到多个侧输出流。Flink SQL支持的大多数功能都是用处理函数实现的。Flink提供了8种不同的处理函数...