通过展平元组的值来转换 RDD



我正在尽力理解Apache Spark中的map-reduce功能,但我被困在扁平化(不确定这是否是正确的术语(RDD上。

我在scala中有以下RDD结构:

RDD[Tuple2[Long, Tuple2[String, Array[String]]]]

这方面的一个例子是这样的:

(1, ("a", ["alice", "bob"]))
(2, ("b", ["charlie", "dave"]))
(3, ("a", ["edward"]))

我想将此RDD转换为以下类型:

RDD[Tuple2[Long, Tuple2[String, String]]]

看起来像:

(1, ("a", "alice"))
(1, ("a", "bob"))
(2, ("b", "charlie"))
(2, ("b", "dave"))
(3, ("a", "edward"))

不幸的是,我无法通过map/flatMap函数来理解这种操作。这种类型的转变是否可能,如果可能,如何?

提前感谢!

这是完全可能的:

rdd.flatMap { case (k, (x, ys)) => ys.map(y => (k, (x, y))) } 

最新更新