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