有什么方法可以将RDD转换回常规RDD吗?
假设我获得了一个本地csv文件,我首先将其作为常规rdd加载
rdd = sc.textFile("$path/$csv")
然后我创建一对rdd(即key是“,”之前的字符串,value是“,”之后的字符串)
pairRDD = rdd.map(lambda x : (x.split(",")[0], x.split(",")[1]))
我使用saveAsTextFile()
存储pairRDDpairRDD.saveAsTextFile("$savePath")
但是,根据调查,存储的文件将包含一些必要的字符,例如“u”,“(”和“)”(因为pyspark只调用toString()来存储键值对) 我想知道我是否可以转换回常规rdd,以便保存的文件不包含“你”或“(”和“)”? 或者我可以使用任何其他存储方法来摆脱不必要的字符?
答案 0 :(得分:0)
这些字符是数据的Python表示形式,如字符串(元组和Unicode字符串)。您应该使用saveAsTextFile
将数据转换为文本(即每个记录一个字符串)。您可以使用map将键/值元组再次转换为单个值,例如:
pairRDD.map(lambda (k,v): "Value %s for key %s" % (v,k)).saveAsTextFile(savePath)