package sparkcore
import org.apache.spark.{SparkConf, SparkContext}
/*
协分组 通group 相同,group 是作用在单个RDD上,
对于cogroup ,将2个rdd 进行协分组的时候,返回的rdd 是一个key 为相同的key ,values 为迭代器,
第一个迭代器中的内容为key 在rdd1 中的values 的值
第二个迭代器中的内容为key 在rdd2 中的values 的值
*/
object cogroupDemo {
def main(args: Array[String]): Unit = {
System.setProperty("hadoop.home.dir","D:\\spark")
val conf = new SparkConf().setAppName("cogroup").setMaster("local[*]")
val sc = new SparkContext(conf)
val rdd1 = sc.parallelize(List(("tom",1),("tom",2),("tom",3),("jack",1),("jack",6)))
val rdd2 = sc.parallelize(List(("jack",1),("jack",2),("tom",3),("jack",1),("tom",7)))
val rdd3 = rdd1.cogroup(rdd2)
rdd3.foreach(println)
//计算每个元素出现的次数
rdd3.mapValues(it=>{
it._1.size+it._2.size
}).foreach(print
cogroup 算子
最新推荐文章于 2024-03-24 16:24:48 发布