Bootstrap

【Flink】随机前缀解决数据倾斜

在这里插入图片描述
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

在这里插入图片描述
在这里插入图片描述

;