Flink是如何实现物理分区?
本文重点
前面课程中我们学习了keyby逻辑分区,但是它无法控制数据究竟分到哪个区,也无法保证数据分配的均匀,本文我们学习物理分区。
物理分区
物理分区可以准确的告知流中的每一个数据元素去哪个分区。keyBy之后得到的是一个 KeyedStream,而物理分区之后结果仍是DataStream,这是二者的区别。
常见的物理分区策略有随机分配(Random)、轮询分配(Round-Robin)、重缩放(Rescale) 和广播(Broadcast)、全局分区、自定义分区。
随机分配(shuffle)
随机分配的意思就是每个元素数据经过shuffle之后,随机的分配到下游算子的并行任务中去。
代码:
package flink.test2;import flink.test.ClickSource;
import flink.test.pojo.Event;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;public class ShuffleTest {public static void