重新分区
一 Vlue类型
10.coalesce()
函数签名 def coalesce(numPartitions: Int, //分区数量 shuffle: Boolean = false, //重新分区时是否打乱分区中(还未)的数据
partitionCoalescer: Option[PartitionCoalescer] = Option.empty)
(implicit ord: Ordering[T] = null) : RDD[T]作用 缩减合并分区,用于大数据集合过滤后提高小数据集的执行效率
11.repartition()
函数签名 def repartition(numPartitions: Int)(implicit ord: Ordering[T] = null): RDD[T] � 作用 扩大分区
三 Key-Value
17. partitionBy()
函数签名 def partitionBy(partitioner: Partitioner): RDD[(K, V)] � 作用 打乱数据、重新分区
例子
val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("R13")
val sc = new SparkContext(conf)
val rdd1: RDD[Int] = sc.makeRDD(List(1,2,3,4),2)
val mapRDD: RDD[(Int, Int)] = rdd1.map(item => (item, 1))
val newRDD: RDD[(Int, Int)] = mapRDD.partitionBy(new HashPartitioner(3)) //可以自定义
newRDD.saveAsTextFile("output")
sc.stop()