2012-11-02 84 views

回答

1

默認情況下HashParititioner使用,整體使用哈希碼來計算減速機號碼。爲了實現你的任務,你可以只散列你的部分密鑰(簽名在你的案例中),並且所有具有相同簽名的密鑰將被分配給同一個簡化器。

試試這個代碼:

public class HashPartitioner<K, V> extends Partitioner<K, V> { 

    public int getPartition(K key, V value,int numReduceTasks) { 

     return key.toString().split("\s+")[0].hashCode() % numReduceTasks; 
    } 
} 
+0

一些評論可能有助於理解 – dove

+0

我寫類似上面的自定義分區,但我遇到的另外一個問題,你能不能幫一下吧http://stackoverflow.com/questions/ 13191468 /如何到指定-的分割器換Hadoop的流 –