HBaseShellのコマンド使用方法(データ操作)

スポンサーリンク

HBase Shell のデータ操作に関連するコマンドの使用方法です。コマンドのヘルプはhelp 'command'で確認できます。

データ操作コマンド

コマンド 引数 機能
put 'table_name', 'key', 'column', 'value' テーブルにデータを追加・更新する。
get 'table_name', 'key', ['column'] 指定したキーのデータを取得する。
scan 'table_name', [option...] テーブルの全データ(範囲)を表示する。
incr 'table_name', 'key', 'column', [value] テーブルの値を加算する。
delete 'table_name', 'key', 'column', [version] テーブルの値の最新履歴を削除する。
deleteall 'table_name', 'key', ['column'] テーブルの値の全履歴を削除する。
get_counter 'table_name' テーブルのレコード数を
truncate 'table_name' テーブルのデータをクリア(再作成)する。
count 'table_name' テーブルのレコード数をカウントする。

各種コマンド詳細

put(データ登録)

put コマンドでデータ(Cell)を登録します。

-- 'test_table'に'row1'のキーで ColumnFamily='cfamily1'、Qualifier='q1'に'c1'を登録
> put 'test_table', 'row1', 'cfamily1:q1', 'c1'
-- Qualifier 無しで登録
> put 'test_table', 'row1', 'cfamily1', 'c1'
-- Timestamp を指定して登録
> put 'test_table', 'row1', 'cfamily1', 'c1', 1458534788984

get(データ取得)

get コマンドではROW(キー)を指定してデータを取得します。

-- 指定したROW(キー)のデータを全て表示
> get 'test_table', 'row1'
-- 指定したROWの ColumnFamily を表示
> get 'test_table', 'row1', 'cfamily1'
> get 'test_table', 'row1', {COLUMN=>'cfamily1'}
-- 指定したROWの ColumnFamily(復数)を表示
> get 'test_table', 'row1', 'cfamily1', 'cfamily2'
> get 'test_table', 'row1', ['cfamily1', 'cfamily2']
> get 'test_table', 'row1', {COLUMN=>['cfamily1','cfamily2']}
-- 表示する最大履歴数を指定(デフォルトでは最新の履歴のみ表示)
> get 'test_table', 'row1', {COLUMN=>'cfamily1', VERSIONS=>3}
-- タイムスタンプ(バージョン)を指定
> get 'test_table', 'row1', {COLUMN=>'cfamily1', TIMESTAMP=>1458529952954}
-- タイムスタンプの範囲を指定してその中で最新の履歴を表示
> get 'test_table', 'row1', {COLUMN=>'cfamily1', TIMERANGE=>[1458529952954, 1458529980267]}
-- フィルターを使用
> get 'test_table', 'row1', {FILTER =>"ValueFilter(=,'binary:c1')"}

ROW(キー)を指定してデータを取得すると、最新履歴の ColumnFamily と ColumnQualifier、Cell、Timestamp が全て表示されます。

> get 'test_table', 'row1'
COLUMN                                         CELL
 cfamily1:q1                                   timestamp=1458529379901, value=c1
 cfamily1:q2                                   timestamp=1458529384663, value=c2
 cfamily2:q1                                   timestamp=1458529656348, value=c1
3 row(s) in 0.0740 seconds

scan(データ取得)

scan コマンドは全データ、指定した範囲のデータを取得して表示します。

-- テーブルの全データを表示(最新履歴)
> scan 'test_table'
-- 指定した ColumnFamily の全データを表示
> scan 'test_table', {COLUMNS=>'cfamily1'}
-- 指定した ColumnFamily の全データを表示
> scan 'test_table', {COLUMNS=>'cfamily1'}
-- 指定した ColumnFamily(復数)の全データを表示
> scan 'test_table', {COLUMNS=>['cfamily1', 'cfamily2']}
-- ROWの範囲を指定(STARTROWは自身を含み、STOPROWは自身を含まない)
> scan 'test_table', {STARTROW=>'row1', STOPROW=>'row3'}
-- 表示レコード数の制限
> scan 'test_table', {LIMIT=>100}
-- 表示文字数を制限(timestampから始まる文字数で表示の制限)
> scan 'test_table', {MAXLENGTH=>33}
-- 結果を逆順に表示
> scan 'test_table', {REVERSED => true}
-- 表示する最大履歴を指定
> scan 'test_table', {VERSIONS=>4}
-- Timestamp を指定
> scan 'test_table', {TIMERANGE => [1458533462263, 1458533889106]}
-- Timestamp の範囲を指定
> scan 'test_table', {TIMERANGE => [1458533462263, 1458533889106]}
-- フィルターを使用
> scan 'test_table', {FILTER =>"ValueFilter(=,'binary:c1-1')"}
> scan 'test_table', {FILTER =>"PrefixFilter('row')"}

incr(値の加算)

incr コマンドで Cell の値を加算します。値は long 型でなければいけません。

-- 値を1加算(省略時のデフォルト)
> incr 'test_table', 'row1', 'cfamily1:inc'
-- 値を10加算
> incr 'test_table', 'row1', 'cfamily1:inc', 10

delete(削除)

delete コマンドで Cell の値を削除します。Timestamp を指定しない場合は最新の履歴のみ削除されるとあるが試してみると全履歴が削除された。

-- 指定した ROW の ColumnFamily のデータを削除
> delete 'test_table', 'row1', 'cfamily1:q1'
-- 指定した Timestamp のデータを削除
> delete 'test_table', 'row1', 'cfamily1:q1', 1458537011423

deleteall(削除)

deleteall コマンドで Cell の値を削除します。delete コマンドとの違いは ROW での指定ができるかどうかという点です。

-- 指定した ROW のデータを削除
> deleteall 'test_table', 'row1'
-- 指定した ROW の ColumnFamily のデータを削除
> deleteall 'test_table', 'row1', 'cfamily1:q1'
-- 指定した Timestamp のデータを削除
> delete 'test_table', 'row1', 'cfamily1:q1', 1458537011423