在现有RDD中创建新记录

时间:2016-11-07 23:37:47

标签: apache-spark rdd

我正在尝试在RDD中创建更多记录:

现在,我有一个RDD[(String, List(String))],内容是:

("str_1", List("sub_str_1", "sub_str_2"))  
("str_2", List("sub_str_3", "sub_str_4")) 
("str_3", List("sub_str_5", "sub_str_6"))

我希望通过展平RDD[(String, String)]将其转换为list[String] 转换后,内容应为

("str_1", "sub_str_1")
("str_1", "sub_str_2")
("str_2", "sub_str_3")
("str_2", "sub_str_4")
("str_3", "sub_str_5")
("str_3", "sub_str_6")

似乎可以应用于RDD的所有方法都无法增加记录数。我能做的就是将当前的转换为具有相同记录数的新RDD。

我的问题:有没有办法增加RDD中的记录数量?

2 个答案:

答案 0 :(得分:5)

使用flatMap

rdd.flatMap { case (str, list) => list.map(elt => (str, elt)) }

答案 1 :(得分:1)

有一个特殊的转变:

rdd.flatMapValues(identity)