2012-02-19 84 views
1

我正在研究簡單的地圖縮減程序。我想在縮減器之後爲密鑰中的每個不同的單詞創建不同的文件。例如,在執行的MapReduce後,我有這樣的事情減速器中的多個輸出

優先級爲1×2

優先級爲1 Y 2

優先級爲1 Z 2

優先級2×2

優先級2 Y 2

現在在縮小階段之後,我想要不同的文件,並根據優先級說明Priority1和Priority2具有所有這些值。我正在使用java,並想知道這種輸出應該寫在reducer中嗎?

我只是想知道這是甚至可能或者如果是如何處理或解決這個問題? 我正在使用Hadoop 0.20.203,因此多輸出不起作用。

任何指針都會有幫助。 感謝您的幫助! Atul

回答

0

您需要先創建一個partioner類,然後根據您的標準創建該分區。

然後您需要創建您自己的outputformat類和recordwriter類。

recordwriter類,需要根據您的需要寫入不同的文件。此外,如果您需要對您的值進行排序,請爲您的關鍵字段創建comparator類。

+0

特別是當您創建輸出格式時,您如何處理爲每個單詞創建新文件?通常情況下,輸出文件是在調用OutputFormat.getRecordWriter(context)時創建的,所以如何知道如何命名文件? – Huckle 2012-07-02 22:30:43

0

看看MultipleOutputs

+0

我看着MultipleOutputs,但它在hadoop 0.20.203中不可用。我很抱歉,我忘了在我的問題中提到hadoop的版本。謝謝!! Atul – user722856 2012-02-19 23:12:57

+0

啊,好的。好吧,我也可以問。 :)你看到http://stackoverflow.com/questions/2180101/generating-multiple-output-files-with-hadoop-0-20? – 2012-02-20 02:09:20