package edu.umd.cloud9.example.hits; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Writable; import org.apache.hadoop.mapred.Partitioner; import org.apache.hadoop.mapred.JobConf; /** * Range partitioner. In the context of graph algorithms, ensures that * consecutive node ids are blocked together. * * @author Jimmy Lin * */ public class RangePartitioner<K, V> implements Partitioner<IntWritable, Writable> { private int mNodeCnt = 0; public RangePartitioner() { } public int getPartition(IntWritable key, Writable value, int numReduceTasks) { return (int) (((float) key.get() / (float) mNodeCnt) * numReduceTasks) % numReduceTasks; } public void configure(JobConf job) { mNodeCnt = job.getInt("NodeCount", 0); } }