1

hbase シェルを使用してリージョン内のレコード数をカウントするにはどうすればよいですか? リージョンが 1 つの場合、テーブルをスキャンしてレコード数を取得できますが、テーブルが複数のリージョンに分割されている場合、hbase シェルでコマンドを使用してこの情報を取得できますか? ありがとう!

4

1 に答える 1

4

特定のキー範囲 (リージョン) のシェルで行を一覧表示できます。

f_keyonly = org.apache.hadoop.hbase.filter.KeyOnlyFilter.new();
f_firstkey = org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter.new();
flist = org.apache.hadoop.hbase.filter.FilterList.new([f_keyonly, f_firstkey]);
scan 'mytable', {STARTROW => 'myStart', ENDROW => 'myEnd', FILTER =>  flist }

myStart と myEnd は、領域の startKey/endKey 境界です。(チェックhttp://myhost:60030/rs-status)

行の総数だけを知りたい場合は、RowCounterジョブを実行します。

hadoop jar /path/to/hbase.jar rowcounter mytable --range=myStart,myEnd

結果はRowCounterMapperカウンターに格納されます。

一方、頻繁にカウントする必要がある場合は、サーバー側で実行されるコプロセッサの実装を検討できます。

詳細については、こちらを参照してください。

于 2013-09-20T14:30:53.730 に答える