2014-03-30 55 views
0

我在程序中使用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。

我嘗試刪除本地臨時文件,並確保文本文件未打開。尋找避免複製臨時文件的方法。

在此先感謝。

+0

通過指定hadoop版本來修改問題。不是一起執行copyFromLocal和mapreduce邏輯,你可以在copyFromLocal命令後立即檢查/ input目錄中的文件。 – sachin

+0

@sachinjose我試圖提供一個接口,可以在執行Map reduce期間給出本地路徑。我正在尋找可以避免臨時文件的解決方案。 – user2934433

回答

1

文件/input/1.txt~ /input/2.txt~是由您在機器中使用的文件編輯器創建的臨時文件。您可以使用Ctrl + H查看本地目錄中的所有隱藏臨時文件並將其刪除。

+0

是的,我瞭解臨時文件正從本地目錄中獲取。我刪除了它們,並確保文件不在編輯器中打開。但臨時文件仍被複制。對不起,我應該在帖子中提到這一點。 – user2934433

相關問題