2013-10-22 108 views
-4

我正在編寫Java MapReduce程序。例如,我有兩個HDFS文件。我的程序會從HDFS讀取這兩個文件,在兩個文件中找到相同的行並輸出結果。 e.g:Hadoop MapReduce處理來自HDFS的不同輸入文件

a.log: 
    apple 
    computer 
    bird 
b.log: 
    steve 
    pear 
    apple 

最終的輸出應

apple 

我怎樣才能做到這一點?我正在嘗試先讀取a.log並將其存儲到散列集中,但它不起作用,因爲任務跟蹤程序無法相互共享內存。有人可以有一些想法嗎?或者Hadoop MapReduce沒有這種OOTB?

+1

這是從一個問題,您已擱置的重新發布:[http://stackoverflow.com/questions/19505043/hadoop-mapreduce-process-multiple-input-files](http://stackoverflow。 COM /問題/ 19505043/Hadoop的MapReduce的過程中,多輸入文件)。 – cabad

回答

0

您試圖在兩個文件上實施連接操作。你可以通過編寫一個映射器來發布(word,filename)對。在reducer中,您檢查兩個文件名是否在發射前的值之間。您可以通過從InputSplit中獲取路徑來獲取文件名。

這在書中'Hadoop in practice'中有描述,如果您打算採用hadoop進行更嚴肅的操作,建議閱讀這本書。

如果此答案有幫助,請標記爲已回答。

相關問題