设为首页 - 加入收藏 核心网 (http://www.hxwgxz.com)- 云主机,资讯,互联网,人工智能,云计算,大数据,区块链,VR,站长网!
热搜: 芯片 2020 市场 删除
当前位置: 主页 > 教程 > 正文

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

发布时间:2021-05-23 20:06 所属栏目:[教程] 来源:互联网
导读:Flink包含8中分区策略,这8中分区策略(分区器)分别如下面所示,本文将从源码的角度一一解读每个分区器的实现方式。 GlobalPartitioner ShufflePartitioner Rebal

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"; 

    } 

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

网友评论
推荐文章