org.apache.hadoop.hbase.util
Class RegionSplitCalculator<R extends KeyRange>

java.lang.Object
  extended by org.apache.hadoop.hbase.util.RegionSplitCalculator<R>
Type Parameters:
R -

public class RegionSplitCalculator<R extends KeyRange>
extends Object

This is a generic region split calculator. It requires Ranges that provide start, end, and a comparator. It works in two phases -- the first adds ranges and rejects backwards ranges. Then one calls calcRegions to generate the multimap that has a start split key as a key and possibly multiple Ranges as members. To traverse, one normally would get the split set, and iterate through the calcRegions. Normal regions would have only one entry, holes would have zero, and any overlaps would have multiple entries. The interface is a bit cumbersome currently but is exposed this way so that clients can choose how to iterate through the region splits.


Field Summary
static Comparator<byte[]> BYTES_COMPARATOR
           
 
Constructor Summary
RegionSplitCalculator(Comparator<R> cmp)
           
 
Method Summary
 boolean add(R range)
          Adds an edge to the split calculator
 com.google.common.collect.Multimap<byte[],R> calcCoverage()
          Generates a coverage multimap from split key to Regions that start with the split key.
static
<R extends KeyRange>
List<R>
findBigRanges(Collection<R> bigOverlap, int count)
          Find specified number of top ranges in a big overlap group.
 TreeSet<byte[]> getSplits()
           
 com.google.common.collect.Multimap<byte[],R> getStarts()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

BYTES_COMPARATOR

public static final Comparator<byte[]> BYTES_COMPARATOR
Constructor Detail

RegionSplitCalculator

public RegionSplitCalculator(Comparator<R> cmp)
Method Detail

add

public boolean add(R range)
Adds an edge to the split calculator

Returns:
true if is included, false if backwards/invalid

calcCoverage

public com.google.common.collect.Multimap<byte[],R> calcCoverage()
Generates a coverage multimap from split key to Regions that start with the split key.

Returns:
coverage multimap

getSplits

public TreeSet<byte[]> getSplits()

getStarts

public com.google.common.collect.Multimap<byte[],R> getStarts()

findBigRanges

public static <R extends KeyRange> List<R> findBigRanges(Collection<R> bigOverlap,
                                                         int count)
Find specified number of top ranges in a big overlap group. It could return less if there are not that many top ranges. Once these top ranges are excluded, the big overlap group will be broken into ranges with no overlapping, or smaller overlapped groups, and most likely some holes.

Parameters:
bigOverlap - a list of ranges that overlap with each other
count - the max number of ranges to find
Returns:
a list of ranges that overlap with most others


Copyright © 2014 The Apache Software Foundation. All Rights Reserved.