开发者社区> 问答> 正文

Flink Broadcast 流的类型是什么?

Flink Broadcast 流的类型是什么?

展开
收起
游客5ixw6pdymb5xs 2021-12-08 15:00:08 602 0
1 条回答
写回答
取消 提交回答
  • 如果正常流是 keyedStream,需要实现 KeyedBroadcastProcessFunction。 public abstract class KeyedBroadcastProcessFunction<KS, IN1, IN2, OUT> extends BaseBroadcastProcessFunction {

    public abstract void processElement(final IN1 value, final ReadOnlyContext ctx, final Collector<OUT> out) throws Exception;
    
    public abstract void processBroadcastElement(final IN2 value, final Context ctx, final Collector<OUT> out) throws Exception;
    

    } 1 2 3 4 5 6 如果正常流是non-keyedStream,需要实现BroadcastProcessFunction public abstract class BroadcastProcessFunction<IN1, IN2, OUT> extends BaseBroadcastProcessFunction {

    public abstract void processElement(final IN1 value, final ReadOnlyContext ctx, final Collector<OUT> out) throws Exception;
    
    public abstract void processBroadcastElement(final IN2 value, final Context ctx, final Collector<OUT> out) throws Exception;
    

    } 1 2 3 4 5 6 上面两个接口暂且称为:广播者,与 非广播者。它们的不同之处在于: 广播者对 Broadcast 有读,写权限。而非广播者只有读权限。这样主要是为了保证Broadcast state 在算子的所有并行实例中是一样的。由于 Flink 中没有跨任务的通信机制,在一个任务实例中的修改不能在并行任务间传递,而广播端在所有并行任务中都能看到相同的数据元,只对广播端提供可写的权限。同时要求在广播端的每个并行任务中,对接收数据的处理是相同的。如果忽略此规则会破坏 State 的一致性保证,从而导致不一致且难以诊断的结果。也就是说,processBroadcast() 的实现逻辑必须在所有并行实例中具有相同的确定性行为。

    2021-12-08 15:00:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载