我在程序中使用fs.copyFromLocalFile(本地路徑,Hdfs dest路徑)。 我每次都在刪除HDFS上的目標路徑,並從本地機器複製文件。但是,從本地路徑複製文件並在其上實現地圖縮小後,會生成每個文件的兩個副本,因此字數會加倍。從本地複製到HDFS的每個文件的兩個副本
爲了清楚起見,我將「Home/user/desktop/input /」作爲本地路徑,HDFS dest路徑爲「/ input」。
當我檢查HDFS目標路徑,即,夾在其上的地圖減少施加這是結果
[email protected]:~$ hdfs dfs -ls /input
14/03/30 08:30:12 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 4 items
-rw-r--r-- 1 hduser supergroup 62 2014-03-30 08:28 /input/1.txt
-rw-r--r-- 1 hduser supergroup 62 2014-03-30 08:28 /input/1.txt~
-rw-r--r-- 1 hduser supergroup 21 2014-03-30 08:28 /input/2.txt
-rw-r--r-- 1 hduser supergroup 21 2014-03-30 08:28 /input/2.txt~
當我提供輸入作爲單個文件主頁/用戶/桌面/輸入/ 1.txt的創建沒有問題,只有單個文件被複制。但提到該目錄會產生問題 但是,通過命令行手動將每個文件放入HDFS Dest中都不會造成問題。
我不確定如果我缺少一個簡單的文件系統邏輯。但是,如果任何人能夠表明我出錯的地方,那將會很棒。
我正在使用hadoop 2.2.0。
我嘗試刪除本地臨時文件,並確保文本文件未打開。尋找避免複製臨時文件的方法。
在此先感謝。
通過指定hadoop版本來修改問題。不是一起執行copyFromLocal和mapreduce邏輯,你可以在copyFromLocal命令後立即檢查/ input目錄中的文件。 – sachin
@sachinjose我試圖提供一個接口,可以在執行Map reduce期間給出本地路徑。我正在尋找可以避免臨時文件的解決方案。 – user2934433