本文重点
在前面的课程中,我们学习了如何将两条不同类型的流connect起来,本文我们学习一种奇怪的情况,connect广播流。
BroadcastProcessFunction
public abstract class BroadcastProcessFunction<IN1, IN2, OUT> extends BaseBroadcastProcessFunction { ... public abstract void processElement(IN1 value, ReadOnlyContext ctx, Collector<OUT> out) throws Exception; public abstract void processBroadcastElement(IN2 value, Context ctx, Collector<OUT> out) throws Exception; ... }BroadcastProcessFunction是一个抽象类,需要实现两个方法,针对合并的两条流中元素分别定义处理操作。区别在于这里一条流是正常处理数据,而 另一条流则是要用新规则来更新广播状态,所以对应的两个方法叫作.processElement() 和.processBroadcastElement()。
两个方法第二个参数都是一个上下文 ctx,都可以通过调 用.getBroadcastState()方法获取到当前的广播状态;区别在于,.processElement()方法里的上下 文 是 “ 只 读 ” 的 ( ReadOnly ), 因 此 获 取 到 的 广 播 状 态 也 只 能 读