如何在值上膨胀对RDD?

时间:2015-12-04 20:51:34

标签: scala apache-spark

我使用Scala,我希望将RDD(String, List[String])转换为RDD(String, String),将列表中的单个元素转换为行,例如

cat List[2,4]
dog List[6,5,4]

应转换为

cat 2
cat 4
dog 6
dog 5
dog 4

1 个答案:

答案 0 :(得分:6)

每当通货膨胀时,平面地图'非常有用

val x = List(("cat", List(2, 4)), ("dog", List(6, 5, 4)))
val rdd = sc.parallelize(x)
val y = rdd.flatMap{ case(x, y) => y.map((x, _))}
y.collect().foreach(println)

输出

(cat,2)
(cat,4)
(dog,6)
(dog,5)
(dog,4)