package org.solbase.indexer.mapreduce; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.io.BytesWritable; import org.apache.hadoop.io.MapWritable; import org.apache.hadoop.mapreduce.Partitioner; import org.apache.hadoop.mapreduce.lib.partition.HashPartitioner; public class SolbaseIndexerPartitioner extends Partitioner<BytesWritable, MapWritable>{ private static Integer chunk = 1000 * 1000; //1000 * 1000 * 20; @Override public int getPartition(BytesWritable key, MapWritable value, int numPartitions) { if(value.containsKey(new BytesWritable(Bytes.toBytes("doc")))){ int docId = Bytes.toInt(key.getBytes()); return docId/chunk % numPartitions; } else { HashPartitioner<BytesWritable, MapWritable> partitioner = new HashPartitioner<BytesWritable, MapWritable>(); return partitioner.getPartition(key, value, numPartitions); } } }