2017-03-13 130 views
3

我有.gz壓縮格式的行數據。我在pyspark 繼讀它是代碼片段如何通過pyspark讀取gz壓縮文件

rdd = sc.textFile("data/label.gz").map(func) 

但我無法成功讀取上面的文件。我如何閱讀gz壓縮文件。我發現了一個類似的問題here,但我當前版本的spark與該問題中的版本不同。我希望在hadoop中應該有一些內置函數。

+0

可能的重複[爲什麼我的\'binaryFiles \'爲空時,我收集它們在pyspark?](http://stackoverflow.com/questions/38256631/why-are-my-binaryfiles-empty-when-i -collect-them-in-pyspark) –

+0

這不是一對一重複的,但你有必要的代碼片段:) –

回答

4

Spark document明確規定,可以自動讀取gz文件:

所有的星火基於文件的輸入法,包括文本文件,支持 上的目錄,壓縮文件和通配符運行也是如此。例如,對於 示例,您可以使用textFile(「/ my/directory」), textFile(「/ my/directory/.txt」)和textFile(「/ my/directory/ .gz」)。

我建議運行下面的命令,並觀察結果:

rdd = sc.textFile("data/label.gz") 

print rdd.take(10) 

假設火花從文件中找到的文件data/label.gz,它將顯示10行。

請注意,像data/label.gz這樣的文件的默認位置將位於spark-user的hdfs文件夾中。它在嗎?

0

你沒有寫出你得到的錯誤信息,但它可能不適合你,因爲gzipped files are not splittable。您需要使用可拆分的壓縮編解碼器,如bzip2。

+0

輸出沒有錯誤。如果你運行'sc.textFile(「data/label.gz」)。count()'它顯示爲0,空rdd – Shafiq

+0

。 – Tim