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

PySpark: Convert a pair RDD back to a regular RDD

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

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

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

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

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

我使用 saveAsTextFile() 存储 pairRDD

pairRDD.saveAsTextFile("$savePath")

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

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

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