Spark之coalesce合并分区源码
Coalesce算子包括:配置执行Shuffle和配置不执行Shuffle两种方式。
1、不执行Shuffle方式
1)函数签名:
def coalesce(numPartitions: Int, shuffle: Boolean = false, //默认false不执行shuffle
partitionCoalescer: Option[PartitionCoalescer] = Option.empty)
(implicit ord: Ordering[T] = null) : RDD[T]
2)功能说明:缩减分区数,用于大数据集过滤后,提高小数据集的执行效率。
3)需求:4个分区合并为2个分区
4)分区源码
2.repartition()重新分区(执行Shuffle)
1)函数签名:
def repartition(numPartitions: Int)(implicit ord: Ordering[T] = null): RDD[T]
2)功能说明
该操作内部其实执行的是coalesce操作,参数shuffle的默认值为true。无论是将分区数多的RDD转换为分区数少的RDD,还是将分区数少的RDD转换为分区数多的RDD,repartition操作都可以完成,因为无论如何都会经shuffle过程。
3)需求说明:创建一个4个分区的RDD,对其重新分区。