如何将(String,Array [String])的RDD拆分为数组中每个项目的RDD(String,String)?

时间:2015-09-03 18:28:39

标签: scala apache-spark scala-collections

我有RDD[(String, Array[String])]形式的PairRDD。我想展平这些值,以便我有一个RDD[(String, String)],其中第一个RDD的Array [String]中的每个元素都成为第二个RDD中的专用元素。

例如,我的第一个RDD有以下元素:

("a", Array("x", "y"))
("b", Array("y", "z"))

我想要的结果是:

("a", "x")
("a", "y")
("b", "y")
("b", "z")

我该怎么做? flatMapValues(f: Array[String] => TraverableOnce[String])似乎是正确的选择,但我需要将其用作参数f

1 个答案:

答案 0 :(得分:4)

要获得所需的结果,请执行以下操作:

val rdd1: RDD[(Any, Array[Any])] = ...
val rddFlat: RDD[(Any, Any)] = rdd1.flatMapValues(identity[Array[Any]])

结果看起来像问题中要求的结果。