我正在尽力去理解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函数了解这种操作。 这种转变是否可能,如果是这样,怎么样?
提前致谢!
答案 0 :(得分:3)
完全有可能:
rdd.flatMap { case (k, (x, ys)) => ys.map(y => (k, (x, y))) }