当HBase表跨多个区域分割时,如何计算区域中的行数

时间:2013-09-17 02:43:55

标签: hbase

如何使用hbase shell计算区域中的记录数?如果有一个区域,我可以扫描表并获取记录数,但如果表分为多个区域,我可以在hbase shell上使用命令来获取此信息吗?谢谢!

1 个答案:

答案 0 :(得分:4)

您可以列出给定键范围(区域)的shell中的行:

f_keyonly = org.apache.hadoop.hbase.filter.KeyOnlyFilter.new();
f_firstkey = org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter.new();
flist = org.apache.hadoop.hbase.filter.FilterList.new([f_keyonly, f_firstkey]);
scan 'mytable', {STARTROW => 'myStart', ENDROW => 'myEnd', FILTER =>  flist }

其中myStart和myEnd是区域的startKey / endKey边界。 (查看http://myhost:60030/rs-status

如果您只想拥有总行数,请运行RowCounter作业: E.g:

hadoop jar /path/to/hbase.jar rowcounter mytable --range=myStart,myEnd

结果将存储在 RowCounterMapper 计数器中。

另一方面,如果您需要经常计算,可以考虑实施在服务器端运行的coprocessor

可以找到进一步的讨论here