Source如果是多并行度,其采用的是轮询;
KeyBy数据倾斜:
- BroadCast或者Custom
- 广播适合join场景
- 自定义适合groupby场景
rebalance
rebalance 将数据发往下游所有并行度
rescale
自定义分区器
//自定义分区器 泛型是key 返回值是分区号
source.partitionCustom(new Partitioner<String>() {
@Override
public int partition(String s, int i) {
if (s.length() == 1) return 0;
return 1;
}
}, new KeySelector<String, String>() {
@Override
public String getKey(String s) throws Exception {
return s;
}
});
自定义分区器防止数据倾斜(Join场景)
1.用map将key加上随机键前缀
2.自定义分区器
随即前缀大小表join