2013-09-25 50 views
0

我有一個map-reduce程序,其中映射器生成多個鍵。根據map-reduce框架,所有具有相同密鑰的對被傳遞給同一個reducer。假設我有10把鑰匙(總計)和3個減速器。減速器最後輸出的是3個輸出文件。是否有任何技術爲每個鍵生成單獨的輸出文件並在最後輸出10個輸出文件?有可能有10個減速器,但是當鍵的數量增加時,這個解決方案可能是不可能的。如何爲減速器中的每個鍵輸出單獨的輸出文件?

回答

0

這聽起來不是一個很好的主意。一旦你開始使用Hadoop的真實的東西,你將面臨嚴重的問題。

但是,如果您仍然需要它,爲什麼不跳過Reduce階段。直接從Mappers發出輸出,然後是Combiner。

+0

跳過Reduce階段的想法很好。但是,我如何將映射器的輸出寫入文件? –

+0

你不必做任何事情。它的作用類似於使用減速器的情況。只需將減速器的數量設置爲零即可。 – Tariq

+0

我實際上將reducer的數量設置爲零,但最後只有一個輸出文件。任何想法? –

0

如果你都還好用舊mapred API再有就是做一個選擇:

你可能去的MultipleTextOutputFormat一個重寫的擴展,然後進行記錄的全部內容是部分'值',同時使文件名或路徑成爲關鍵。

oddjob庫中已經有一個實現:MultipleLeafValueOutputFormat,你也可以實現自己。

瞭解更多關於它here。也讀過我的類似答案here

相關問題