本文介紹統計云數據庫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萬行每秒。