HBaseシェルを使用して、ApsaraDB for HBaseのデータを管理できます。たとえば、テーブルの作成、データの挿入、データの削除、テーブルの削除などです。このトピックでは、HBaseシェルについて簡単に紹介します。
アクセス構成
ApsaraDB for HBase Standard Editionについては、HBaseシェルを使用してApsaraDB for HBase Standard Editionクラスタにアクセスするをご参照ください。
ApsaraDB for HBase Performance-enhanced Editionについては、HBaseシェルを使用してApsaraDB for HBase Performance-enhanced Editionインスタンスにアクセスするをご参照ください。
共通コマンド
このセクションでは、HBaseシェルでサポートされている共通コマンドについて説明します。詳細については、The Apache HBase Shellをご参照ください。
データ定義言語
create: creates a table. // テーブルを作成します。 list: lists all tables in HBase. // HBaseのすべてのテーブルを一覧表示します。 disable: disables a table. // テーブルを無効にします。 is_disabled: verifies whether a table is disabled. // テーブルが無効になっているかどうかを確認します。 enable: enables a table. // テーブルを有効にします。 is_enabled: verifies whether a table is enabled. // テーブルが有効になっているかどうかを確認します。 describe: provides the description of a table. // テーブルの説明を提供します。 alter: alters a table. // テーブルを変更します。 exists: verifies whether a table exists. // テーブルが存在するかどうかを確認します。 drop: deletes a table from HBase. // HBaseからテーブルを削除します。
データ操作言語
put: puts a cell value at a specified column in a specified row in a particular table. // 特定のテーブルの特定の行の特定の列にセル値を配置します。 get: gets the content of a row or cell. // 行またはセルの内容を取得します。 delete: deletes a cell value in a table. // テーブル内のセル値を削除します。 deleteall: deletes all cells in a given row. // 指定された行のすべてのセルを削除します。 scan: scans and returns table data. // テーブルデータをスキャンして返します。 count: counts and returns the number of rows in a table. // テーブルの行数をカウントして返します。 truncate: truncates all data in a table. This command actually disables, deletes, and re-creates a specified table. This command causes the loss of regions. // テーブル内のすべてのデータを切り捨てます。このコマンドは、実際には指定されたテーブルを無効化、削除、および再作成します。このコマンドを実行すると、リージョンが失われます。 truncate_preserve: truncates all data in a table. This command actually disables, deletes, and re-creates a specified table. The regions in the new table are consistent with those in the old table. // テーブル内のすべてのデータを切り捨てます。このコマンドは、実際には指定されたテーブルを無効化、削除、および再作成します。新しいテーブルのリージョンは、古いテーブルのリージョンと一致します。
HBaseシェルの実行と終了
HBaseシェルを実行するには、次のコマンドを実行します。
bin/hbase shell
HBaseシェルを終了するには、次のコマンドを実行します。
quit
基本的なコマンドとその使用方法を表示するには、次のコマンドを実行します。
help
基本操作
HBaseテーブルを作成します。
create
コマンドを使用してテーブルを作成します。テーブルを作成するときは、テーブルと列ファミリの名前を入力する必要があります。// testという名前のテーブルを作成します。このテーブルには、cfという名前の列ファミリがあります。 create 'test', 'cf'
すべてのテーブルに関する情報をクエリします。
list
コマンドを使用して、HBaseデータベース内のすべてのテーブルに関する情報をクエリします。正規表現を使用してテーブルをフィルタリングすることもできます。list list 'abc.*' list 'test'
データを挿入します。
put
コマンドを使用して、新しいテーブルにデータを挿入します。たとえば、次のステートメントを実行して、3つのデータレコードをテーブルに挿入できます。put 'test', 'row1', 'cf:a', 'value1' put 'test', 'row2', 'cf:b', 'value2' put 'test', 'row3', 'cf:c', 'value3'
説明上記のステートメントでは、
test
はテーブル名、row1
はテーブルのrowkey、cf:a
はカスタム列ファミリ名と列名、value1
は値を示します。指定したテーブルのデータをクエリします。
scan
コマンドを使用して、HBaseデータをクエリできます。このコマンドを使用して、テーブルをスキャンしたり、指定した範囲内のデータをクエリしたりできます。ただし、このコマンドは、単一のデータレコードをクエリするために使用されるget
コマンドよりもクエリ結果を返す速度が遅くなります。この例では、デモデータベースに少量のデータしか格納されていないため、scanコマンドを使用しています。testという名前のテーブルのデータをクエリするには、次のステートメントを実行します。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
コマンドを使用して、テーブル内の単一のデータレコードをクエリします。get 'test', 'row1'
次のデータが返されます。
COLUMN CELL cf:a timestamp=1421762485768, value=value1 1 row(s) in 0.0350 seconds
指定したテーブルを無効にして有効にします。
テーブルを削除したり、設定を変更したりする場合は、最初に [無効化] コマンドを使用してテーブルを無効にする必要があります。テーブルを削除するか、設定を変更した後、[有効化] コマンドを使用してテーブルを有効にします。
disable 'test' enable 'test'
指定したテーブルを削除します。
[削除] コマンドを使用してテーブルを削除します。このコマンドは注意して使用してください。
drop 'test'
共通構成
指定したテーブルのメジャーコンパクション期間を設定します。特に必要がない限り、この期間を設定しないことをお勧めします。
メジャーコンパクション期間はミリ秒(ms)単位で測定されます。デフォルト値は 7 日です。値を 0 に設定すると、メジャーコンパクション期間は無効になります。
alter 'test', CONFIGURATION => {'hbase.hregion.majorcompaction' => 300000}
指定したテーブルの列ファミリのデータ圧縮形式を設定します。
ApsaraDB for HBaseのデータ圧縮の詳細については、データの圧縮とエンコードをご参照ください。
alter 'test', NAME => 'cf', COMPRESSION => 'SNAPPY'
指定したテーブルの列ファミリのブロックエンコードタイプを設定します。
たとえば、次のステートメントを実行して、testという名前のテーブルのcfという名前の列ファミリのブロックエンコードタイプをDATA_BLOCK_ENCODINGに設定できます。
alter 'test', NAME => 'cf', DATA_BLOCK_ENCODING => 'DIFF'
指定したテーブルの列ファミリのデータの有効期間(TTL)を設定します。
TTLは秒単位で測定されます。この例では、TTL値は2592000秒に設定されています。これは30日に相当します。
alter 'test', NAME => 'cf', TTL => 2592000
指定したテーブルをリージョンに事前に分割します。詳細については、事前分割をご参照ください。