1

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

4

1 回答 1

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作业:例如:

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

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

另一方面,如果您需要频繁计数,您可以考虑实现一个在服务器端运行的协处理器。

进一步的讨论可以在这里找到。

于 2013-09-20T14:30:53.730 回答