1
我有三個減速,我需要他們每個人獲得相同的密鑰,像這樣正確的減速機:路由鍵值在Hadoop的輔助排序
GOOG - Reducer 0
AAPL - Reducer 1
VMW - Reducer 2
在分區的getPartition()方法應返回一個int,指示(0,1,2)的還原器之一的索引。
的getPartition的實現()我有是:
return ((CompositeKey) key).getSymbol().hashCode() % numReduceTasks;
然而,這並不在這裏工作是我所得到的:
int numReduceTasks = 3;
System.out.println("GOOG".hashCode() % numReduceTasks);//output: 0
System.out.println("AAPL".hashCode() % numReduceTasks);//output: 1
System.out.println("VMW".hashCode() % numReduceTasks);//output: 1
所以在輸出文件,我得到
.../part-r-00000
GOOG
.../part-r-00001
AAPL
VMW
.../part-r-00002
<empty>
問題是我該如何解決這個問題?即如何編寫一個分區程序功能,以確保相同的密鑰到達同一個縮減程序。
謝謝@Donald,但在這種情況下,我不能在LocalJobRunner中運行它。 – jakstack