Hadoop的決定哪些減速將處理其輸出密鑰通過使用Partitioner 的。如果你只輸出幾個鍵,並想跨減速均勻分佈,你可能會更好實現自定義分區程序你輸出數據。例如
public class MyCustomPartitioner extends Partitioner<KEY, VALUE>
{
public int getPartition(KEY key, VALUE value, int numPartitions) {
// do something based on the key or value to determine which
// partition we want it to go to.
}
}
然後,您可以設置在任務配置這個自定義分區與
Job job = new Job(conf, "My Job Name");
job.setPartitionerClass(MyCustomPartitioner.class);
您也可以實現您的自定義分區程序的配置界面,如果你想根據崗位設置做任何進一步的配置。 另外,檢查你有沒有設定減少配置的任何地方任務爲1(尋找「mapred.reduce.tasks」),或在代碼的數量,例如
job.setNumReduceTasks(1);
是映射器產生多個密鑰在KV對?如果碰巧是一個單一的鍵,那麼將只有一個減速器。如果不是這種情況,那麼可能是一個配置問題。 –