如何将 (String, Array[String]) 的 RDD 拆分为数组中每个项目的 (String, String) RDD?
How to split RDD of (String, Array[String]) into RDD of (String, String) for each item in array?
我有一个形式为 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
?
要达到预期效果,请执行以下操作:
val rdd1: RDD[(Any, Array[Any])] = ...
val rddFlat: RDD[(Any, Any)] = rdd1.flatMapValues(identity[Array[Any]])
结果与问题中要求的结果一致。
我有一个形式为 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
?
要达到预期效果,请执行以下操作:
val rdd1: RDD[(Any, Array[Any])] = ...
val rddFlat: RDD[(Any, Any)] = rdd1.flatMapValues(identity[Array[Any]])
结果与问题中要求的结果一致。