You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ns...@apache.org on 2011/01/11 20:03:55 UTC
svn commit: r1057799 - in /hbase/trunk/src/main:
java/org/apache/hadoop/hbase/client/HBaseAdmin.java
java/org/apache/hadoop/hbase/regionserver/Store.java ruby/hbase/admin.rb
ruby/shell/commands/split.rb
Author: nspiegelberg
Date: Tue Jan 11 19:03:54 2011
New Revision: 1057799
URL: http://svn.apache.org/viewvc?rev=1057799&view=rev
Log:
HBASE-3437 : Support Explict Split Points from the Shell
Modified:
hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java
hbase/trunk/src/main/ruby/hbase/admin.rb
hbase/trunk/src/main/ruby/shell/commands/split.rb
Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java?rev=1057799&r1=1057798&r2=1057799&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java Tue Jan 11 19:03:54 2011
@@ -1059,6 +1059,11 @@ public class HBaseAdmin implements Abort
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.
Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java?rev=1057799&r1=1057798&r2=1057799&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java Tue Jan 11 19:03:54 2011
@@ -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()) {
Modified: hbase/trunk/src/main/ruby/hbase/admin.rb
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/ruby/hbase/admin.rb?rev=1057799&r1=1057798&r2=1057799&view=diff
==============================================================================
--- hbase/trunk/src/main/ruby/hbase/admin.rb (original)
+++ hbase/trunk/src/main/ruby/hbase/admin.rb Tue Jan 11 19:03:54 2011
@@ -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
#----------------------------------------------------------------------------------------------
Modified: hbase/trunk/src/main/ruby/shell/commands/split.rb
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/ruby/shell/commands/split.rb?rev=1057799&r1=1057798&r2=1057799&view=diff
==============================================================================
--- hbase/trunk/src/main/ruby/shell/commands/split.rb (original)
+++ hbase/trunk/src/main/ruby/shell/commands/split.rb Tue Jan 11 19:03:54 2011
@@ -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