HBase Shell は、ApsaraDB for HBase のデータを管理するためのインタラクティブなコマンドラインインターフェイスです。これを利用して、テーブルの作成と構成、データの挿入とクエリ、およびテーブルの削除を行います。
前提条件
開始する前に、以下を確認してください。
ApsaraDB for HBase インスタンス (Standard Edition または Performance-enhanced Edition)
インスタンスノードへの Shell アクセス
接続設定については、以下をご参照ください。
Standard Edition: HBase Shell を使用した ApsaraDB for HBase Standard Edition クラスターへのアクセス
Performance-enhanced Edition: HBase Shell を使用した ApsaraDB for HBase Performance-enhanced Edition インスタンスへのアクセス
HBase Shell の起動と終了
インスタンスノードから HBase Shell を起動します。
$ bin/hbase shell
hbase(main):001:0>利用可能なコマンドと使用量を確認するには、以下を実行します。
hbase(main):001:0> help終了するには、以下を実行します。
hbase(main):001:0> quitコマンドリファレンス
HBase Shell は 2 種類のコマンドをサポートしています。完全なコマンドリファレンスについては、「The Apache HBase Shell」をご参照ください。
データ定義言語 (DDL)
| コマンド | 説明 |
|---|---|
create | テーブルを作成します |
list | すべてのテーブルをリストします |
describe | テーブルの詳細と構成を表示します |
alter | テーブルまたはカラムファミリーを変更します |
exists | テーブルが存在するかどうかを確認します |
disable | テーブルを無効にします |
is_disabled | テーブルが無効になっているかどうかを確認します |
enable | テーブルを有効にします |
is_enabled | テーブルが有効になっているかどうかを確認します |
drop | テーブルを削除します |
データ操作言語 (DML)
| コマンド | 説明 |
|---|---|
put | 指定された行とカラムのセルに値を書き込みます |
get | 単一の行またはセルを読み取ります |
scan | テーブルをスキャンし、複数の行を返します |
count | テーブル内の行数をカウントします |
delete | 特定のセル値を削除します |
deleteall | 行内のすべてのセルを削除します |
truncate | テーブルを無効化、削除、再作成することで、テーブル内のすべてのデータをクリアします。リージョンは保持されません。 |
truncate_preserve | テーブルを無効化、削除、再作成することで、テーブル内のすべてのデータをクリアします。元のテーブルのリージョンは保持されます。 |
基本操作
テーブルの作成
create を使用して、テーブル名と少なくとも 1 つのカラムファミリー名を指定します。
hbase(main):001:0> create 'test', 'cf'テーブルのリスト
hbase(main):003:0> list名前または正規表現でフィルタリングします。
hbase(main):004:0> list 'abc.*'
hbase(main):005:0> list 'test'データの挿入
put を使用して値を書き込みます。各 put は、特定のテーブル、行キー、カラム (family:qualifier 形式)、および値を対象とします。
hbase(main):006:0> put 'test', 'row1', 'cf:a', 'value1'
hbase(main):007:0> put 'test', 'row2', 'cf:b', 'value2'
hbase(main):008:0> put 'test', 'row3', 'cf:c', 'value3'テーブルのスキャン
scan は、テーブル内のすべての行を返します。
hbase(main):009:0> scan 'test'
ROW COLUMN+CELL
row1 column=cf:a, timestamp=1421762485768, value=value1
row2 column=cf:b, timestamp=1421762491785, value=value2
row3 column=cf:c, timestamp=1421762496210, value=value3
3 row(s) in 0.0230 seconds単一行のルックアップには、get を使用します。これは、個々のレコードを取得する場合、scan よりも高速です。
単一の行の読み取り
hbase(main):010:0> get 'test', 'row1'
COLUMN CELL
cf:a timestamp=1421762485768, value=value1
1 row(s) in 0.0350 secondsテーブルの無効化と有効化
テーブルを削除したり、設定を変更したりする前に、テーブルを無効にしてください。
hbase(main):012:0> disable 'test'
hbase(main):013:0> enable 'test'テーブルの削除
テーブルを削除する前に、無効にする必要があります。
hbase(main):014:0> disable 'test'
hbase(main):015:0> drop 'test'drop は、テーブルとそのすべてのデータを完全に削除します。この操作は元に戻せません。
alter を使用したテーブルの構成
alter を使用して、既存のテーブルのカラムファミリー設定を変更します。
メジャーコンパクション期間の設定
メジャーコンパクション期間はミリ秒単位で測定されます。デフォルトは 7 日です。0 に設定すると、スケジュールされたメジャーコンパクションが無効になります。
hbase(main):001:0> alter 'test', CONFIGURATION => {'hbase.hregion.majorcompaction' => 300000}ワークロードが具体的に必要としない限り、この設定を変更しないでください。
データ圧縮の設定
サポートされている圧縮形式の詳細については、「データ圧縮とエンコーディング」をご参照ください。
hbase(main):002:0> alter 'test', NAME => 'cf', COMPRESSION => 'SNAPPY'ブロックエンコーディングの設定
hbase(main):003:0> alter 'test', NAME => 'cf', DATA_BLOCK_ENCODING => 'DIFF'存続時間 (TTL) の設定
TTL は秒単位で測定されます。TTL より古いデータは自動的に削除されます。次の例では、30 日間の TTL (2,592,000 秒) を設定します。
hbase(main):004:0> alter 'test', NAME => 'cf', TTL => 2592000テーブルのリージョンへの事前分割
事前分割は、最初からリージョン全体にデータを均等に分散します。詳細については、「事前分割」をご参照ください。