Преобразовать список пар ключ-значение в каждой строке СДР в один ключ-значение в каждой строке - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть RDD как

List((a,b),(b,c))
List((d,e))

Как я могу получить его как

(a,b)
(b,c)
(d,e)

Я пробовал RDD.flatMap (x => x), это не работаетпотому что есть список пар ключ-значение, а не просто список значений.

1 Ответ

0 голосов
/ 24 февраля 2019

rdd.flatMap(identity) преобразует RDD[List[(String, String)]] в RDD[(String, String)].

scala> val rdd = sc.parallelize(List(List(("a","b"),("b","c")), List(("d","e"))))
...
rdd: org.apache.spark.rdd.RDD[List[(String, String)]] = ParallelCollectionRDD[2] at parallelize at <console>:13
scala> rdd.flatMap(identity)
res2: org.apache.spark.rdd.RDD[(String, String)] = MapPartitionsRDD[3] at flatMap at <console>:14
scala> res2.collect()
...
res3: Array[(String, String)] = Array((a,b), (b,c), (d,e))

Это будет работать так же для любого RDD[List[T]], независимо от формы T.Может помочь больше, если вы поделитесь немного большей информацией о том, что вы пытаетесь сделать.

...