HBASE-3437 : Support Explict Split Points from the Shell

git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1057799 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Nicolas Spiegelberg 2011-01-11 19:03:54 +00:00
parent 0d31ac5f37
commit 8d04c2b297
4 changed files with 25 additions and 11 deletions

View File

@ -1059,6 +1059,11 @@ public class HBaseAdmin implements Abortable {
split(tableNameOrRegionName, null);
}
public void split(final String tableNameOrRegionName,
final String splitPoint) throws IOException, InterruptedException {
split(Bytes.toBytes(tableNameOrRegionName), Bytes.toBytes(splitPoint));
}
/**
* Split a table or an individual region.
* Asynchronous operation.

View File

@ -1319,12 +1319,11 @@ public class Store implements HeapSize {
StoreSize checkSplit(final boolean force) {
this.lock.readLock().lock();
try {
// Iterate through all store files
if (this.storefiles.isEmpty()) {
return null;
}
if (!force && (storeSize < this.desiredMaxFileSize)) {
return null;
// sanity checks
if (!force) {
if (storeSize < this.desiredMaxFileSize || this.storefiles.isEmpty()) {
return null;
}
}
if (this.region.getRegionInfo().isMetaRegion()) {

View File

@ -61,8 +61,12 @@ module Hbase
#----------------------------------------------------------------------------------------------
# Requests a table or region split
def split(table_or_region_name)
@admin.split(table_or_region_name)
def split(table_or_region_name, split_point)
if split_point == nil
@admin.split(table_or_region_name)
else
@admin.split(table_or_region_name, split_point)
end
end
#----------------------------------------------------------------------------------------------

View File

@ -23,13 +23,19 @@ module Shell
class Split < Command
def help
return <<-EOF
Split table or pass a region row to split individual region
Split entire table or pass a region to split individual region. With the
second parameter, you can specify an explicit split key for the region.
Examples:
split 'tableName'
split 'regionName' # format: 'tableName,startKey,id'
split 'tableName', 'splitKey'
split 'regionName', 'splitKey'
EOF
end
def command(table_or_region_name)
def command(table_or_region_name, split_point = nil)
format_simple_command do
admin.split(table_or_region_name)
admin.split(table_or_region_name, split_point)
end
end
end