Scala 如何在spark中使用相同的键展平列表

Scala 如何在spark中使用相同的键展平列表,scala,Scala,我有一个RDD像下面 Array[(String, List[Int])] = Array((2008,List(40, 20)), (2000,List(30, 10)), (2001,List(9))) 我希望将同一关键点的值展平 预期产出: Array[(字符串,Int)] 数组((2008,40)、(2008,20)、(2000,30)、(2000,10)、(2001,9)) 有人能帮我得到这个结果吗?将每个元组转换为元组列表,然后使用扁平化: scala> val arr

我有一个RDD像下面

 Array[(String, List[Int])] = Array((2008,List(40, 20)), (2000,List(30, 10)), (2001,List(9)))
我希望将同一关键点的值展平

预期产出:

Array[(字符串,Int)]
数组((2008,40)、(2008,20)、(2000,30)、(2000,10)、(2001,9))

有人能帮我得到这个结果吗?

将每个元组转换为元组列表,然后使用扁平化:

scala> val arr = Array(("2008", List(40, 20)), ("2000", List(30, 10)), ("2001", List(9)))
arr: Array[(String, List[Int])] = Array((2008,List(40, 20)), (2000,List(30, 10)), (2001,List(9)))
scala> arr.map { case (s, list) => list map { i => (s, i) } }.flatten
res3: Array[(String, Int)] = Array((2008,40), (2008,20), (2000,30), (2000,10), (2001,9))

我想试试这样的东西:

val l = Array((2008,List(40, 20)), (2000,List(30, 10)), (2001,List(9)))

l.flatMap(pair => pair._2.map(listElem => (pair._1, listElem)))