本文介绍统计云数据库HBase表行数的方法。

根据云数据库HBase表的服务类型使用不同的统计方法。
  • 如果云数据库HBase表为增强版,统计HBase表行数的方法具体请参见统计表行数的方法
  • 如果云数据库HBase表为标准版,可以通过两种方式精确的统计HBase表行数。先使用HBase Shell连接云数据库HBase标准版,具体操作请参见使用HBase Shell访问
    • 通过HBase Shell工具使用COUNT命令可以精确的统计HBase表行数。执行COUNT命令的原理是将表的数据一批一批全部扫描出来进行统计,所以建议在相同内网的ECS客户端上执行COUNT命令。如果通过公网执行COUNT命令,网络使用率会较大,导致统计效率降低。根据表结构的不同,扫描的速度会有所差别,使用COUNT命令扫描全表的速度可以达到小于10万行每秒。
      执行以下语句统计table表的总行数。
      COUNT 'table'
      执行结果如下:统计结果显示
    • RowCounter会在本地启动一个伪分布式的MR任务来进行COUNT操作。默认情况下这种方式是按照单个线程来执行的,统计速率与HBase Shell执行COUNT命令的统计速率差不多。如果您想提高统计速度,可以通过指定Dmapreduce.local.map.tasks.maximum=线程数来进行多线程并发执行,需要注意以下两点:
      • 线程数小于等于表Region的个数。
      • 线程数增多可能造成集群负载过高从而影响线上业务,请根据业务需求设置。
      在HBase Shell中执行以下代码统计Lindorm宽表的行数。
      • 统计目标表table的总行数。
        ./alihbase-2.0.18/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter  "table"
      • 统计目标表table的总行数,16个线程并发执行。
        ./alihbase-2.0.18/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter -Dmapreduce.local.map.tasks.maximum=16 "table"
      • 统计NameSpace为ns中的目标表table的总行数。
        ./alihbase-2.0.18/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter  "ns:table"
      执行结果保存在Log目录中的hbase.log文件。统计结果显示