分区策略决定了一条数据如何发送给下游。Flink中默认提供了八大分区策略(也叫分区器)。
本文基于Flink 1.9.0总结Flink DataStream中的八大分区策略以及手动实现一个自定义分区器。
八大分区策略继承关系图
ChannelSelector
: 接口,决定将记录写入哪个Channel
。有3个方法:
void setup(int numberOfChannels)
: 初始化输出Channel
的数量。int selectChannel(T record)
: 根据当前记录以及Channel
总数,决定应将记录写入下游哪个Channel
。八大分区策略的区别主要在这个方法的实现上。boolean isBroadcast()
: 是否是广播模式。决定了是否将记录写入下游所有Channel
。
StreamPartitioner
:抽象类,也是所有流分区器GlobalPartitioner
,ShufflePartitione