Spark преобразовать PairRDD в RDD

Как лучше всего преобразовать PairRDD в RDD с объединением K и V (в java)?

Например, PairRDD содержит K как некоторую строку и V как JSON. Я хочу добавить этот K к значению JSON и создать RDD.

Входная параRDD

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

Вывод должен быть и RDD следующим образом

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

person Manikandan Kannan    schedule 20.10.2017    source источник


Ответы (1)


Вы можете использовать карту для перевода между двумя рассуждениями:

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, но правая часть уравнения (я считаю) останется прежней.

person James Tobin    schedule 20.10.2017