MapReduce自定義分割槽partition的作用和用法
阿新 • • 發佈:2018-12-03
預設分割槽數量為
key.hash%reducetask的個數
自定義分割槽
自己定義的
自定義分割槽很簡單,我們只需要繼承抽象類Partitioner,重寫getPartition方法即可,另外還要給任務設定分割槽:
job.setPartitionerClass(), job.setNumReduceTasks();
就可以了。
注意:
自定義分割槽的數量需要和reduce task的數量保持一致。
但是為1也或者大於reducetask也可以,為1的時候所有的資料放到一起,大於的時候則按照分割槽編號來分
例子
import org.apache.hadoop.mapreduce.Partitioner; public class JiduPartitioner<K, V> extends Partitioner<K, V>{ @Override //自定義partition的數量需要和reduce task數量保持一致 public int getPartition(K key, V value, int numPartitions) { String dname=key.toString(); switch(dname) { case "研發部門":return 0; case "測試部門":return 1; case "硬體部門":return 2; case "銷售部門":return 3; } return 4; } }