Spark将PairRDD转换为RDD

时间:2017-10-20 12:34:05

标签: apache-spark rdd java-pair-rdd

将两个转换为RDD并将K和V转换为RDD的最佳方法是什么?(在java中)?

例如,PairRDD包含K作为一些字符串,V作为JSON。我想将此K添加到值JSON并生成RDD。

输入PairRDD

("abc", {"x:"100", "y":"200"})
("def", {"x":"400", "y":"500")

输出应该和RDD如下

({"x:"100", "y":"200","z":"abc"})
({"x":"400", "y":"500","z":"def"})

1 个答案:

答案 0 :(得分:0)

您可以使用地图在两者之间进行翻译 考虑:

scala> pairrdd.foreach(println)
(def,Map(x -> 400, y -> 500))
(abc,Map(x -> 100, y -> 200))

(我认为这是你的样本代表的意思)

scala> val newrdd = prdd.map(X=> X._2 ++ Map("z"-> X._1))
scala> newrdd.foreach(println)
Map(x -> 100, y -> 200, z -> abc)
Map(x -> 400, y -> 500, z -> def)

您必须将val newrdd更改为java语法,但等式(我相信)的右侧将保持不变