【尚硅谷Java版】Flink1.13 转换算子之物理分区

【尚硅谷Java版】Flink1.13转换算子之物理分区


分区:将数据进行重新分布,传递到不同的流分区去进行下一步处理。

物理分区 分类

物理分区 可以分为6类,分别是:

  1. 随机分区
  2. 轮询分区
  3. rescale分区
  4. 广播
  5. 全局分区
  6. 自定义重分区

具体操作

1、随机分区:对于全部的分区,进行洗牌

 //1、随机分区 对于全部的分区 进行洗牌
    stream.shuffle().print("随机分区").setParallelism(4);

2、轮询分区:对于全部的分区 进行发牌

 //2、轮询分区  对于全部的分区 进行发牌
        stream.rebalance().print("轮询分区").setParallelism(4);

3、rescale重缩放分区:对于全部的分区先进行一个划分,然后再 在已经分好的分区中,对数据进行轮询分区,发牌。拿我们这里的例子来说,先将全部分区分成2部分,再针对这两部分进行发牌,奇数在一部分分区中 偶数在一部分分区中。

/*
        3、rescale重缩放分区  对于全部的分区先进行一个划分,然后再 在已经分好的分区中,对数据进行轮询分区,发牌
           拿我们这里的例子来说,先将全部分区分成2部分,再针对这两部分进行发牌,奇数在一部分分区中 偶数在一部分分区中
        */
        env.addSource(new RichParallelSourceFunction<Integer>() {
   


            @Override
            public void run(SourceContext<Integer> sourceContext) throws Exception {
   

                for (int i=0;i<8;i++){
   
                    //将奇偶数分别发送到0号到1号并行分区
                    if(i%2==getRuntimeContext().getIndexOfThisSubtask()){
   
                        sourceContext.collect(i);
                    }
                }
            }
            @Override
            public void cancel() {
   
            }
        }).setParallelism(2)
                .rescale()
                .pri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值