将rdd每行中的键值对列表转换为每行中的单个键值

xwmevbvl  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(383)

我有rdd

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

我怎样才能得到它

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

我试过rdd.flatmap(x=>x),这不起作用,因为这里有一个键值对列表,而不仅仅是一个值列表。

eivgtgni

eivgtgni1#

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 . 如果你能分享更多关于你尝试做什么的信息,可能会有更大的帮助。

相关问题