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

PySpark:将一对RDD转换回常规RDD,pyspark,rdd,keyvaluepair,Pyspark,Rdd,Keyvaluepair,有没有办法将一对RDD转换回常规RDD 假设我得到一个本地csv文件,首先将其作为常规rdd加载 rdd = sc.textFile("$path/$csv") 然后我创建一对rdd(即key是“,”之前的字符串,value是“,”之后的字符串) 我使用saveAsTextFile()存储pairRDD 但是,根据调查,存储的文件将包含一些必要的字符,例如“u'”(“and”)”(pyspark只是调用toString(),以存储键值对) 我想知道是否可以转换回常规rdd,这样保存的文件就不会

有没有办法将一对RDD转换回常规RDD

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

rdd = sc.textFile("$path/$csv")
然后我创建一对rdd(即key是“,”之前的字符串,value是“,”之后的字符串)

我使用saveAsTextFile()存储pairRDD

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

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

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

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

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

非常感谢你的帮助。从你的解释中真正理解结构。我尝试了另一种方法,比如:pairdd.map(lambda(x,y):(x+“,”+y)).saveAsTextFile($savePath)。这将一对rdd存储为csv文件(有点像将其转换回常规rdd)。您好,如何使用java实现这一点?非常感谢您的帮助。从你的解释中真正理解结构。我尝试了另一种方法,比如:pairdd.map(lambda(x,y):(x+“,”+y)).saveAsTextFile($savePath)。这将一对rdd存储为csv文件(有点像将其转换回常规rdd)?
pairRDD.map(lambda (k,v): "Value %s for key %s" % (v,k)).saveAsTextFile(savePath)