class LimitedKeyPartitioner extends Partitioner<BulkIngestKey,Value> implements Configurable, DelegatePartitioner {

    @Override
    public int getPartition(BulkIngestKey bKey, Value value, int numPartitions) {
        // ensure this returns a positive value (note Math.abs does not always return a positive number, go figure)
        int partitioner = getKeyHashcode(bKey) & Integer.MAX_VALUE;
        return partitionLimiter.limit(numPartitions, partitioner);
    }

}