站长网 教程 Flink的八种分区策略源码分析

Flink的八种分区策略源码分析

RebalancePartitioner RescalePartitioner BroadcastPartitioner ForwardPartitioner KeyGroupStreamPartitioner CustomPartitionerWrapper 继承关系图接口 名称 ChannelSelector 实现 publicinterfaceChannelSelectorTextendsIOReadableWritable{ /** *初

RebalancePartitioner

RescalePartitioner

BroadcastPartitioner

ForwardPartitioner

KeyGroupStreamPartitioner

CustomPartitionerWrapper

继承关系图

接口

名称

ChannelSelector

实现

public interface ChannelSelector<T extends IOReadableWritable> { 

 

    /** 

     * 初始化channels数量,channel可以理解为下游Operator的某个实例(并行算子的某个subtask). 

     */ 

    void setup(int numberOfChannels); 

 

    /** 

     *根据当前的record以及Channel总数, 

     *决定应将record发送到下游哪个Channel。 

     *不同的分区策略会实现不同的该方法。 

     */ 

    int selectChannel(T record); 

 

    /** 

    *是否以广播的形式发送到下游所有的算子实例 

     */ 

    boolean isBroadcast(); 

抽象类

名称

StreamPartitioner

实现

public abstract class StreamPartitioner<T> implements 

        ChannelSelector<SerializationDelegate<StreamRecord<T>>>, Serializable { 

    private static final long serialVersionUID = 1L; 

 

    protected int numberOfChannels; 

 

    @Override 

    public void setup(int numberOfChannels) { 

        this.numberOfChannels = numberOfChannels; 

    } 

 

    @Override 

    public boolean isBroadcast() { 

        return false; 

    } 

 

    public abstract StreamPartitioner<T> copy(); 

继承关系图

GlobalPartitioner

简介

该分区器会将所有的数据都发送到下游的某个算子实例(subtask id = 0)

源码解读

/** 

 * 发送所有的数据到下游算子的第一个task(ID = 0) 

 * @param <T> 

 */ 

@Internal 

public class GlobalPartitioner<T> extends StreamPartitioner<T> { 

    private static final long serialVersionUID = 1L; 

 

    @Override 

    public int selectChannel(SerializationDelegate<StreamRecord<T>> record) { 

        //只返回0,即只发送给下游算子的第一个task 

        return 0; 

    } 

 

    @Override 

    public StreamPartitioner<T> copy() { 

        return this; 

    } 

 

    @Override 

    public String toString() { 

        return "GLOBAL"; 

    } 

本文来自网络,不代表站长网立场,转载请注明出处:https://www.zwzz.com.cn/html/video/2021/0523/4959.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部