Flink 物理分区算子(Physical Partitioning)
在Flink中,常见的物理分区策略有:随机分配(Random)、轮询分配(Round-Robin)、重缩放(Rescale)和广播(Broadcast)。
接下来,我们通过源码和Demo分别了解每种物理分区算子的作用和区别。
(1) 随机分区(shuffle)
最简单的重分区方式就是直接“洗牌”。通过调用 DataStream 的.shuffle()方法,将数据随机地分配到下游算子的并行任务中去。
随机分区服从均匀分布(uniform distribution),所以可以把流中的数据随机打乱,均匀地传递到下游任务分区。因为是完全随机的,所以对于同样的输入数据, 每次执行得到的结果也不会相同。


经过随机分区之后,得到的依然是一个 DataStream。
我们可以做个简单测试:将数据读入之后直接打印到控制台,将输出的并行度设置为 2,
中间经历一次 shuffle。执行多次,观察结果是否相同。
package com.flink.DataStream.PhysicalPartitioning;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
/**
* flink 常用物理分区算子-shuffle:随机分区-洗牌
*/

本文详细介绍了ApacheFlink中四种常见的物理分区算子:随机分配(shuffle)、轮询分配(rebalance)、重缩放(rescale)和广播(broadcast),以及它们的工作原理和示例应用。
最低0.47元/天 解锁文章
356

被折叠的 条评论
为什么被折叠?



