【问题标题】:How to calculate number of rows in a region when HBase table is split across multiple regions当 HBase 表跨多个区域拆分时如何计算区域中的行数
【发布时间】:2013-09-21 08:07:31
【问题描述】:

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

【问题讨论】:

    标签: hbase


    【解决方案1】:

    您可以在 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 计数器中。

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

    进一步的讨论可以找到here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多