本文介紹統計云數據庫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文件。統計結果顯示