我曾經用Python進行編程。我的公司現在已經安裝了Jupyter的Hadoop集羣。到目前爲止,我從未使用過Spark/Pyspark。使用(spark,python,pyspark,jupyter)將多個項目保存到HDFS
我能夠從HDFS容易加載文件爲這樣:
text_file = sc.textFile("/user/myname/student_grades.txt")
而且I'm能寫出這樣的輸出:
text_file.saveAsTextFile("/user/myname/student_grades2.txt")
事情我正嘗試實現就是使用一個簡單的「for循環」逐個讀取文本文件,並將其內容寫入一個HDFS文件。所以,我想這一點:
list = ['text1.txt', 'text2.txt', 'text3.txt', 'text4.txt']
for i in list:
text_file = sc.textFile("/user/myname/" + i)
text_file.saveAsTextFile("/user/myname/all.txt")
所以這個工程的列表中的第一個元素,但後來給了我此錯誤消息:
Py4JJavaError: An error occurred while calling o714.saveAsTextFile.
: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory
XXXXXXXX/user/myname/all.txt already exists
爲了避免我「所迷離」混亂的-out IP地址與XXXXXXXX。
什麼是正確的方法來做到這一點? 我將有大量的數據集(如'text1','text2'...),並希望在將它們保存到HDFS之前對它們執行一個python函數。但我希望將結果全部放在「一個」輸出文件中。
非常感謝!
MG
編輯: 看來我的最終目標不是很清楚。我需要分別對每個文本文件應用一個函數,然後我想將輸出附加到現有的輸出目錄。事情是這樣的:
for i in list:
text_file = sc.textFile("/user/myname/" + i)
text_file = really_cool_python_function(text_file)
text_file.saveAsTextFile("/user/myname/all.txt")
看來我的最終目標不是很清楚。我需要分別對每個文本文件應用一個函數,然後我想將輸出附加到現有的輸出目錄。請參閱編輯 – mgruber
所有文本文件的相同功能? – Suresh
對於所有文件都是一樣的功能,但是我之前無法加入文本文件,因爲每個文件需要單獨處理 – mgruber