我正在使用Hadoop的MapReduce。我有一個文件作爲map函數的輸入,map函數做了一些事情(與問題無關)。我想讓縮減器取得地圖的輸出並寫入兩個不同的文件。 我看到它(我希望有一個有效的解決方案)的方式,也有在我的腦海裏有兩種方式:使用Hadoop並行還原mapreduce
- 1減速,這將知道,以識別不同的情況,並寫入到2個不同的上下文。
- 2個並行reducer,每個人都知道識別他的相關輸入,忽略另一個,這樣每個人都會寫入一個文件(每個reducer將寫入不同的文件)。
我更喜歡第一種解決方案,因爲這意味着我只會查看map的輸出,而不是兩次並行 - 但如果第一個不支持某種方式 - 我會很高興聽到第二個建議的解決方案。
*注意:這兩個最終文件應該是分開的,不需要加入它們。
您是否考慮過從映射器中發出兩個單獨的鍵的選項,每種映射器都有一個輸出? –
如果沒有選擇兩個文件中每個文件的標準,則可以只有兩個reducer併發出鍵/值對。來自一個reducer的所有鍵/值將進入一個文件,其餘的將進入另一個文件。 –
我們需要了解更多關於如何識別每種記錄類型的信息(正如@David所說的 - 如果您可以爲映射器中的每種記錄類型創建不同的密鑰,那麼您可以對該密鑰進行hadoop分區,並將每條記錄發送至其特定減速器)。 – cftarnas