You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2009/09/12 02:11:39 UTC
svn commit: r814093 - in /hadoop/hbase/trunk: CHANGES.txt bin/HBase.rb
bin/hirb.rb
Author: apurtell
Date: Sat Sep 12 00:11:39 2009
New Revision: 814093
URL: http://svn.apache.org/viewvc?rev=814093&view=rev
Log:
HBASE-1827 Add disabling block cache scanner flag to the shell
Modified:
hadoop/hbase/trunk/CHANGES.txt
hadoop/hbase/trunk/bin/HBase.rb
hadoop/hbase/trunk/bin/hirb.rb
Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=814093&r1=814092&r2=814093&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Sat Sep 12 00:11:39 2009
@@ -43,6 +43,7 @@
HBASE-1687 bin/hbase script doesn't allow for different memory settings for
each daemon type
HBASE-1823 Ability for Scanners to bypass the block cache
+ HBASE-1827 Add disabling block cache scanner flag to the shell
OPTIMIZATIONS
Modified: hadoop/hbase/trunk/bin/HBase.rb
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/bin/HBase.rb?rev=814093&r1=814092&r2=814093&view=diff
==============================================================================
--- hadoop/hbase/trunk/bin/HBase.rb (original)
+++ hadoop/hbase/trunk/bin/HBase.rb Sat Sep 12 00:11:39 2009
@@ -11,10 +11,12 @@
include_class('java.lang.Long') {|package,name| "J#{name}" }
include_class('java.lang.Boolean') {|package,name| "J#{name}" }
+import org.apache.hadoop.hbase.KeyValue
import org.apache.hadoop.hbase.client.HBaseAdmin
import org.apache.hadoop.hbase.client.HTable
import org.apache.hadoop.hbase.client.Get
import org.apache.hadoop.hbase.client.Put
+import org.apache.hadoop.hbase.client.Scan
import org.apache.hadoop.hbase.client.Delete
import org.apache.hadoop.hbase.HConstants
import org.apache.hadoop.hbase.io.BatchUpdate
@@ -43,6 +45,7 @@
LIMIT = "LIMIT"
METHOD = "METHOD"
MAXLENGTH = "MAXLENGTH"
+ CACHE_BLOCKS = "CACHE_BLOCKS"
# Wrapper for org.apache.hadoop.hbase.client.HBaseAdmin
class Admin
@@ -392,42 +395,56 @@
filter = args["FILTER"] || nil
startrow = args["STARTROW"] || ""
stoprow = args["STOPROW"] || nil
- timestamp = args["TIMESTAMP"] || HConstants::LATEST_TIMESTAMP
+ timestamp = args["TIMESTAMP"] || nil
columns = args["COLUMNS"] || getAllColumns()
+ cache = args["CACHE_BLOCKS"] || true
if columns.class == String
columns = [columns]
elsif columns.class != Array
raise ArgumentError.new("COLUMNS must be specified as a String or an Array")
end
- cs = columns.to_java(java.lang.String)
-
if stoprow
- s = @table.getScanner(cs, startrow, stoprow, timestamp)
+ scan = Scan.new(startrow.to_java_bytes, stoprow.to_java_bytes)
else
- s = @table.getScanner(cs, startrow, timestamp, filter)
+ scan = Scan.new(startrow.to_java_bytes)
+ end
+ for c in columns
+ split = KeyValue.parseColumn(c.to_java_bytes)
+ if split[1] != nil
+ scan.addColumn(split[0], split[1])
+ else
+ scan.addFamily(split[0])
+ end
+ end
+ if filter != nil
+ scan.setFilter(filter)
end
+ if timestamp != nil
+ scan.setTimeStamp(timestamp)
+ end
+ scan.setCacheBlocks(cache)
else
- columns = getAllColumns()
- s = @table.getScanner(columns.to_java(java.lang.String))
+ scan = Scan.new()
end
+ s = @table.getScanner(scan)
count = 0
@formatter.header(["ROW", "COLUMN+CELL"])
i = s.iterator()
while i.hasNext()
- r = i.next()
+ r = i.next().getRowResult()
row = String.from_java_bytes r.getRow()
+ count += 1
+ if limit != -1 and count >= limit
+ break
+ end
for k, v in r
column = String.from_java_bytes k
cell = toString(column, v, maxlength)
@formatter.row([row, "column=%s, %s" % [column, cell]])
end
- count += 1
- if limit != -1 and count >= limit
- break
- end
end
- @formatter.footer(now)
+ @formatter.footer(now, count)
end
def put(row, column, value, timestamp = nil)
@@ -529,9 +546,9 @@
def count(interval = 1000)
now = Time.now
- columns = getAllColumns()
- cs = columns.to_java(java.lang.String)
- s = @table.getScanner(cs)
+ scan = Scan.new()
+ scan.setCacheBlocks(false)
+ s = @table.getScanner(scan)
count = 0
i = s.iterator()
@formatter.header()
Modified: hadoop/hbase/trunk/bin/hirb.rb
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/bin/hirb.rb?rev=814093&r1=814092&r2=814093&view=diff
==============================================================================
--- hadoop/hbase/trunk/bin/hirb.rb (original)
+++ hadoop/hbase/trunk/bin/hirb.rb Sat Sep 12 00:11:39 2009
@@ -248,6 +248,12 @@
hbase> scan '.META.', {COLUMNS => 'info:regioninfo'}
hbase> scan 't1', {COLUMNS => ['c1', 'c2'], LIMIT => 10, \\
STARTROW => 'xyz'}
+
+ For experts, there is an additional option -- CACHE_BLOCKS -- which
+ switches block caching for the scanner on (true) or off (false). By
+ default it is enabled. Examples:
+
+ hbase> scan 't1', {COLUMNS => ['c1', 'c2'], CACHE_BLOCKS => false}
status Show cluster status. Can be 'summary', 'simple', or 'detailed'. The
default is 'summary'. Examples: