すべてのプロダクト
Search
ドキュメントセンター

Lindorm:テーブルの行数カウント

最終更新日:Mar 29, 2026

LindormTable は、ログ構造化マージツリー (LSM-Tree) ストレージ構造を使用しています。正確な行数を取得するには、全表スキャンが必要です。テーブルが大きくなるほど、操作に時間がかかります。COUNT 操作を頻繁に実行することは避けてください。

以下の方法が利用可能です。

方法カウントタイプ速度最適な用途
HBase Shell COUNT正確100,000 行/秒未満小規模なテーブル、迅速な確認
HBase RowCounter正確HBase Shell と同様 (マルチスレッドオプションあり)移行後のデータ整合性検証
Lindorm SQL SELECT COUNT(*)正確サーバーあたり数十万行/秒 (分散)より高速な正確なカウントが必要な大規模なテーブル
Lindorm SQL SHOW ESTIMATED ROWS推定即時迅速な容量見積もり
クラスター管理システム推定即時移行後のデータ整合性チェック

前提条件

開始する前に、以下を確認してください。

  • LindormTable へのアクセス

  • Lindorm クラスターと同じ VPC にある Elastic Compute Service (ECS) クライアント (HBase Shell および RowCounter 操作に必要)

HBase Shell を使用した行数カウント

HBase Shell を使用して LindormTable に接続します。詳細については、「Lindorm Shell を使用した LindormTable へのアクセス」をご参照ください。

count コマンドは、すべてのテーブルデータをバッチ単位でスキャンして行統計情報を集計します。同じ VPC(仮想プライベートクラウド)内の ECS クライアントで実行してください。インターネット経由で実行すると、ネットワーク使用量が高くなり、操作が大幅に遅くなります。スキャン速度は 1 秒あたり 100,000 行未満であり、テーブルスキーマによって異なります。

テーブル内のすべての行をカウントするには、次のコマンドを実行します。

count 'table'

次の結果が返されます。

The result of the count operation is displayed.

HBase RowCounter を使用した行数カウント

HBase Shell を使用して LindormTable に接続します。詳細については、「Lindorm Shell を使用した LindormTable へのアクセス」をご参照ください。

RowCounter は、ローカルの擬似分散 MapReduce ジョブを実行して行数をカウントします。

デフォルトでは、RowCounter はシングルスレッドで、カウント速度は HBase Shell の count コマンドと同程度です。

例:

  • テーブル内のすべての行をカウントします。

    ./alihbase-2.0.18/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter  "table"
  • 16 個の並行スレッドを使用してすべての行をカウントします。

    ./alihbase-2.0.18/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter -Dmapreduce.local.map.tasks.maximum=16 "table"
  • ns 名前空間内のテーブルのすべての行をカウントします:

    ./alihbase-2.0.18/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter  "ns:table"

複数のスレッドを使用する場合、次の点に注意してください。

  • スレッド数は、テーブル内のリージョン数以下である必要があります。

  • スレッド数が多いほど、クラスター負荷が増加し、オンラインサービスに影響を与える可能性があります。

結果は、ログ ディレクトリ内の hbase.log ファイルに保存されます。

image

Lindorm SQL を使用した行数カウント

正確な行数カウント

Lindorm-cli を使用して LindormTable に接続します。詳細については、「Lindorm-cli を使用した LindormTable への接続」をご参照ください。

Lindorm SQL は、COUNT ロジックをすべての Lindorm プロセスに並列で分散するため、HBase Shell よりも大幅に高速です。速度はサーバーあたり数十万行/秒に達し、クラスター内のサーバー数に応じてスケーリングします。この操作には引き続き全表スキャンが必要であり、デフォルトのタイムアウトは 120 秒です。この制限時間内にカウントが完了しない場合、ステートメントはエラーを返します。

SELECT COUNT(*) FROM table;

次の結果が返されます。

+--------+
| EXPR$0 |
+--------+
| 16000  |
+--------+
重要

100万行を超えるテーブルの場合、検索インデックスを使用してクエリを高速化します。詳細については、「検索インデックスを使用したワイドテーブルのデータクエリ」をご参照ください。

推定行数カウント

重要

この機能には、LindormTable バージョン 2.8.2.6 以降および Lindorm SQL バージョン 2.8.2.6 以降が必要です。

全表スキャンなしで推定行数を取得するには、次のステートメントを実行します。

SHOW ESTIMATED ROWS FROM table;

次の結果が返されます。

+---------------------+
| ESTIMATED_ROW_COUNT |
+---------------------+
| 15000               |
+---------------------+

クラスター管理システムを使用した推定行数表示

クラスター管理システムにログインします。詳細については、「クラスター管理システムへのログイン」をご参照ください。

Lindorm クラスター管理システムで、左側のナビゲーションウィンドウの[概要] をクリックします。「[現在の IDC]」エリアでテーブルを見つけ、「[表示]」を「EstimateRowCount」列でクリックします。

推定行数は、ファイル作成時に収集された各データファイルからの行数メタデータを加算することで計算されます。テーブルに更新、削除、または TTL (Time-to-Live) 期限切れデータがある場合、この値は不正確になる可能性があります。そのような場合、同じ行が異なる状態の複数のファイルに存在する可能性があります。テーブルに更新、削除、または TTL 期限切れがない場合、表示されるカウントは完全に正確です。これは、データ移行後のデータ整合性検証に役立ちます。

推定行数が 0 と表示されてもテーブルにデータが含まれている場合、LindormTable のマイナーバージョンが古い可能性があります。これを解決するには、マイナーバージョンをアップグレードしてください。詳細については、「マイナーバージョンのアップグレード」をご参照ください。