【问题标题】:Join Two RDDs in Spark then Eliminate the Keys在 Spark 中加入两个 RDD,然后消除密钥
【发布时间】:2017-11-15 15:58:48
【问题描述】:

我有两个具有以下结构的 RDD:

rdd1<String, String>: (str01, str12), (str01, str13), (str02, str13), ..  
rdd2<String, Float>: (str01, 0.1), (str02, 0.3), ..  

我想加入这些RDD得到一个新的RDD,其中rdd1中的str01、str02被它们在rdd2中的值替换,如下:

rdd3<String, Float>: (str12, 0.1), (str13, 0.1), (str13, 0.3)  

那么我需要通过key来减少这个RDD,如下:

rdd4<String, Float>: (str12, 0.1), (str13, 0.1+0.3 = 0.4)  

我尝试了左右外连接,但以 RDD 结束 知道如何解决这个问题吗?

【问题讨论】:

    标签: java apache-spark rdd


    【解决方案1】:

    这对您的问题有帮助。

    val map1=List("str01" -> "str12", "str01" -> "str13", "str02" -> "str13")
    val map2=List("str01"->0.1, "str02"->0.3)
    
    val rdd1=sc.parallelize(map1)
    val rdd2=sc.parallelize(map2)
    
    val joinedrdd = rdd1.join(rdd2).map(x=> x._2)
    val r = joinedrdd.reduceByKey(_+_)
    

    这个 rdd r 的结构为:RDD[(String, Double)]

    【讨论】:

      猜你喜欢
      • 2016-01-24
      • 1970-01-01
      • 2016-09-07
      • 2017-06-27
      • 2018-11-24
      • 2021-08-19
      • 2019-01-01
      • 1970-01-01
      • 2020-05-23
      相关资源
      最近更新 更多