一 Value

8.sample()

函数签名 def sample(
withReplacement: Boolean, //抽取后的数据是否放回
fraction: Double, //每个数据被抽取的概率
seed: Long = Utils.random.nextLong): RDD[T] //抽取数据时随机算法的种子

作用 处理数据倾斜

第二个参数—抽取概率代表
如果抽取的数据不放回,数据源中每条数据被抽取的概率,基准值的概念
如果抽取的数据放回,表示数据源中的每条数据被抽取的可能次数

9.distinct()

函数签名 def distinct(): RDD[T] � 作用 对RDD数据集合进行去重

12. intersection()

函数签名 def intersection(other: RDD[T]): RDD[T]

�交集

13. union()

函数签名 def union( other: RDD[T] ) : RDD[T] � 并集

  1. val soruceRDD: RDD[(String, (Int, Int, Int))] = rdd1.union(rdd2).union(rdd3)




14. subtract()

函数签名 def subtract( other: RDD[T] ) : RDD[T] � 差



二 双Value类型

16.sortBy()

函数签名 def sortByK
( implicit ord: Ordering[K], ctag: ClassTag[K] ) : RDD[T]

作用: 按照�rdd集合中一个 值/元组 进行排序

⚠️注意: sortBy默认情况下,不会改变分区数量,但是中间存在shuffle操作

  1. val rdd: RDD[(String,Int)] = sc.makeRDD(List(("a",1),("b",99),("c",12),("d",22)), 2)
  2. val sortRDD: RDD[(String,Int)] = rdd.sortBy(item => item._2 ,false)
  3. sortRDD.collect().foreach(println)

sortWith()

类似于Java中Comportor比较器