我正在尽力理解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))) }