RDD拆分groupByKey的反向

时间:2017-09-22 00:49:51

标签: scala apache-spark rdd

现在我的文件包含

1: 3 4
2: 1 3 5

我想进入

1: 3
1: 4
2: 1
2: 3
2: 5

它就像是groupByKey的反向版本 谁有想法如何解决? 感谢

1 个答案:

答案 0 :(得分:1)

您可以使用flatMapValues

来展开列表
val rdd = sc.parallelize(Seq(
  (1, Seq(4, 5)),
  (2, Seq(1, 3, 5))
))

rdd.flatMapValues(x => x).collect
// res1: Array[(Int, Int)] = Array((1,4), (1,5), (2,1), (2,3), (2,5))

如果数据位于文本文件中,请先创建RDD。例如:

val rdd = sc.textFile("/path/to/file").
  map(_.split(": ")).
  map{ case Array(x, y) => (x, y.split(" ")) }