概念

类似全连接,但是在同一个RDD中对key聚合

作用:在类型为(K,V)和(K,W)的 RDD 上调用,返回一个(K,(Iterable,Iterable))类型的 RDD
image.png

案例

  1. import org.apache.spark.rdd.RDD
  2. import org.apache.spark.{SparkConf, SparkContext}
  3. object demo {
  4. def main(args: Array[String]): Unit = {
  5. val conf: SparkConf = new SparkConf().setAppName("SparkCoreTest").setMaster("local[*]")
  6. val sc: SparkContext = new SparkContext(conf)
  7. //3.1 创建第一个RDD
  8. val rdd: RDD[(Int, String)] = sc.makeRDD(Array((1, "a"), (2, "b"), (3, "c")))
  9. //3.2 创建第二个pairRDD
  10. val rdd1: RDD[(Int, Int)] = sc.makeRDD(Array((1, 4), (2, 5), (4, 6), (2, 8)))
  11. val newRDD: RDD[(Int, (Iterable[String], Iterable[Int]))] = rdd.cogroup(rdd1)
  12. newRDD.collect().foreach(println)
  13. /* 输出
  14. (1,(CompactBuffer(a),CompactBuffer(4)))
  15. (2,(CompactBuffer(b),CompactBuffer(5, 8)))
  16. (3,(CompactBuffer(c),CompactBuffer()))
  17. (4,(CompactBuffer(),CompactBuffer(6)))
  18. */
  19. sc.stop()
  20. }
  21. }