如何将 (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]])

结果与问题中要求的结果一致。