PySpark:将一对RDD转换回常规RDD

时间:2015-10-06 13:30:48

标签: pyspark rdd keyvaluepair

有什么方法可以将RDD转换回常规RDD吗?

假设我获得了一个本地csv文件,我首先将其作为常规rdd加载

rdd = sc.textFile("$path/$csv")

然后我创建一对rdd(即key是“,”之前的字符串,value是“,”之后的字符串)

pairRDD = rdd.map(lambda x : (x.split(",")[0], x.split(",")[1]))

我使用saveAsTextFile()

存储pairRDD
pairRDD.saveAsTextFile("$savePath")

但是,根据调查,存储的文件将包含一些必要的字符,例如“u”,“(”和“)”(因为pyspark只调用toString()来存储键值对) 我想知道我是否可以转换回常规rdd,以便保存的文件不包含“你”或“(”和“)”? 或者我可以使用任何其他存储方法来摆脱不必要的字符?

1 个答案:

答案 0 :(得分:0)

这些字符是数据的Python表示形式,如字符串(元组和Unicode字符串)。您应该使用saveAsTextFile将数据转换为文本(即每个记录一个字符串)。您可以使用map将键/值元组再次转换为单个值,例如:

pairRDD.map(lambda (k,v): "Value %s for key %s" % (v,k)).saveAsTextFile(savePath)