当前位置: 代码迷 >> 综合 >> Spark:intersection算子
  详细解决方案

Spark:intersection算子

热度:75   发布时间:2024-02-08 19:25:21.0

intersection是Tranformation算子,具有shuffle

它是去二个rdd的交集,也就是共同存在的

 

源码:
让二个rdd经过map阶段形成元组,value为null(1,null).
在调cogroup阶段让有相同key的value都没null,
filter过滤value,如果value1,和value2不为空说明.第一个rdd出现的值在第二个rdd也出现了
keys,取出所有的key/和values一样object IntersectionDemo {def main(args: Array[String]): Unit = {val conf = new SparkConf().setAppName("IntersectionDemo").setMaster("local[*]")val sc = new SparkContext(conf)val rdd1 = sc.parallelize(List(5,6,4,7))val rdd2 = sc.parallelize(List(1,2,3,4))val rdd3: RDD[(Int, Null)] = rdd1.map((_, null))val rdd4: RDD[(Int, Null)] = rdd2.map((_, null))val rdd5: RDD[(Int, (Iterable[Null], Iterable[Null]))] = rdd3.cogroup(rdd4)val keys = rdd5.filter(it =>it._2._1.nonEmpty && it._2._2.nonEmpty).keyskeys.saveAsTextFile("IntersectionDemo-out2")sc.stop()}}
  相关解决方案