根据Spark Scala中的键映射和拆分数据

时间:2017-08-22 18:15:27

标签: scala apache-spark rdd

如何在scala

中实现此目的
val a = sc.parallelize(List(("a", "aaa$$bbb"), ("b", ("ccc$$ddd$$eee"))))
val res1 = a.mapValues(_.replaceAll("\\$\\$", "-"))

这里我有Array [(String,String)]

Array[(String, String)] = Array(("a",aaa-bbb), ("b",ccc-ddd-eee))

现在我希望结果如下

1,aaa
1,bbb
2,ccc
2,ddd
2,eee

提前致谢

1 个答案:

答案 0 :(得分:2)

您可以使用flatMap

res1.flatMap{ case (k, v) => v.split("-").map((k, _)) }.collect
// res7: Array[(String, String)] = Array((a,aaa), (a,bbb), (b,ccc), (b,ddd), (b,eee))