2012-08-30 42 views
0

我是hadoop的新手。我有包含文件的多個文件夾來處理hadoop中的數據。我懷疑要在map-reducer算法中實現mapper。我可以指定多個映射器來處理多個文件,並將所有輸入文件作爲一個輸出使用一個reducer嗎?如果可能的話,請爲實施上述步驟提供指導。在hadoop中實現多個mapper和單個reducer

回答

1

如果您有多個文件,使用MultipleInputs

addInputPath()方法可用於:

  1. 添加多個路徑和一個共同的映射器實現
  2. 添加自定義映射器和輸入多路格式實現。

對於具有單個縮減器,讓每個映射的輸出鍵相同...說1或「abc」。這樣,框架將只創建一個reducer。

0

如果要以相同的方式映射文件(例如,它們都具有相同的格式和處理要求),那麼您可以配置一個映射器來處理所有這些文件。

您可以通過配置的TextInputFormat類做到這一點:

string folder1 = "file:///home/chrisgerken/blah/blah/folder1"; 
string folder2 = "file:///home/chrisgerken/blah/blah/folder2"; 
string folder3 = "file:///home/chrisgerken/blah/blah/folder3"; 
TextInputFormat.setInputPaths(job, new Path(folder1), new Path(folder2), new Path(folder3)); 

這將導致所有的文件夾1,2和3的文件映射器正在處理中。

當然,如果您需要使用不同的輸入類型,則必須適當地配置該類型。

相關問題