org.apache.hadoop.hbase.util
Class RegionSplitCalculator<R extends KeyRange>
java.lang.Object
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.
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
|
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 |
BYTES_COMPARATOR
public static final Comparator<byte[]> BYTES_COMPARATOR
RegionSplitCalculator
public RegionSplitCalculator(Comparator<R> cmp)
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 othercount
- the max number of ranges to find
- Returns:
- a list of ranges that overlap with most others
Copyright © 2015 The Apache Software Foundation. All Rights Reserved.