本文介绍统计云数据库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"
- 通过HBase Shell工具使用COUNT命令可以精确的统计HBase表行数。执行COUNT命令的原理是将表的数据一批一批全部扫描出来进行统计,所以建议在相同内网的ECS客户端上执行COUNT命令。如果通过公网执行COUNT命令,网络使用率会较大,导致统计效率降低。根据表结构的不同,扫描的速度会有所差别,使用COUNT命令扫描全表的速度可以达到小于10万行每秒。