2015-10-06 62 views
0

有什麼方法可以將一對RDD轉換回常規RDD?PySpark:將一對RDD轉換回常規RDD

想我得到一個本地CSV文件,我第一次加載它作爲一個經常RDD

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

然後我創建了一個對RDD(即關鍵是之前的字符串「」和值後弦「」)

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

我存儲pairRDD通過使用saveAsTextFile()

pairRDD.saveAsTextFile("$savePath") 

然而,如調查,存儲的文件將包含一些必要的字符,如「u」,「(」和「)」(如pyspark只是簡單地調用toString(),來存儲鍵值對) 我想知道我是否可以轉換回到一個正常的rdd,這樣保存的文件將不會包含「u」或「(」和「)」? 或者我可以用來擺脫不必要的字符的任何其他存儲方法?

回答

0

這些字符是數據作爲字符串(元組和Unicode字符串)的Python表示形式。由於您使用saveAsTextFile,因此您應將數據轉換爲文本(即每條記錄只有一個字符串)。您可以使用map將鍵/值元組再次轉換爲單個值,例如:

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

非常感謝您的幫助。從你的解釋中真正理解結構。我嘗試了另一種方式,如:pairRDD.map(lambda(x,y):(x +「,」+ y))。saveAsTextFile($ savePath)。這將一對rdd存儲爲csv文件(將其轉換回常規rdd)。 – user3569633