HBase Shell のテーブル管理に関連するコマンドの使用方法です。コマンドのヘルプはhelp 'command'
で確認できます。
テーブル管理コマンド
Namespace
コマンド | 引数 | 機能 |
---|---|---|
create_namespace | 'namespace', {'property'=>'value'} | Namespaceを作成する。 |
alter_namespace | 'namespace', {'property'=>'value'} | Namespaceのプロパティを変更する。 |
drop_namespace | 'namespace' | Namespaceを削除する。 |
list_namespace | 'namespace' | Namespaceの一覧を表示する。 |
list_namespace_tables | 'namespace' | Namespaceに所属するテーブル一覧を表示する。 |
Table
コマンド | 引数 | 機能 |
---|---|---|
create | 'table_name', {column_family, param...} | テーブルを作成する。 |
drop | 'table_name' | テーブルを削除する。 |
drop_all | 'table_name(regex)' | 正規表現にマッチしたテーブルを全て削除。 |
disable | 'table_name' | テーブルを無効(使用不可)にする。 |
disable_all | 'table_name(regex)' | 正規表現にマッチしたテーブルを全て無効。 |
is_disabled | 'table_name' | テーブルが無効か判定する。 |
enable | 'table_name' | テーブルを有効(使用可能)にする。 |
enable_all | 'table_name(regex)' | 正規表現にマッチしたテーブルを全て有効。 |
is_enabled | 'table_name' | テーブルが有効か判定する。 |
alter | 'table_name', {column_family...} | テーブル定義を変更する。 |
truncate | 'table_name' | テーブルを再作成する。 |
describe | 'table_name' | テーブル定義を表示する。descでもOK。 |
exists | 'table_name' | テーブルの存在確認。 |
list | ['regex'] | 引数を省略した場合は全テーブル一覧を表示する。 |
show_filters | - | HBaseの全てのフィルタを表示する。 |
alter_status | 'table_name' | |
alter_async | 'table_name' |
各種コマンド詳細
create(テーブル作成)
create コマンドの基本構文は以下の通りです。
-- ColumnFamily を1つ指定(Qualifierは自由に追加できるので不要) > create '<table_name>', '<column_family>' -- ColumnFamily を復数指定 > create '<table_name>', '<column_family1>', '<column_family2>', '<column_family3>' -- ColumnFamily が1つ且つ、パラメータを指定 > create '<table_name>', {NAME => '<column_family1>' [, Param => Value...]} -- ColumnFamily が復数且つ、パラメータを指定 > create '<table_name>', {NAME => '<column_family1>' [, Param => Value...]}, {NAME => '<column_family2>' [, Param => Value...]}
ColumnFamily に指定できるパラメータ。
パラメータ | 機能 | デフォルト |
---|---|---|
NAME | ColumnFamilyを指定 | - |
VERSIONS | Cellの履歴数 | 1 |
BLOOMFILTER | Apache HBase ™ Enabling Bloom Filters | ROW |
IN_MEMORY | Apache HBase ™ LruBlockCache Design | false |
KEEP_DELETED_CELLS | Apache HBase ™ Keeping Deleted Cells | false |
TTL | データの有効期間(秒単位) | FOREVER |
DATA_BLOCK_ENCODING | Apache HBase ™ Enable Data Block Encoding | NONE |
COMPRESSION | Apache HBase ™ Compression | NONE |
MIN_VERSIONS | Apache HBase ™ Min Versions | 0 |
BLOCKCACHE | Apache HBase ™ Block Cache | true |
BLOCKSIZE | Apache HBase ™ ColumnFamily BlockSize | 65536 |
REPLICATION_SCOPE | レプリケーション対象の場合は1 | 0 |
ColumnFamily を1つも指定しないと失敗します。
> create 'test_table' ERROR: Table must have at least one column family
drop(テーブル削除)
drop コマンドは何もせずに実行すると失敗します。
> drop 'test_table' ERROR: Table test_table3 is enabled. Disable it first.'
削除する前にテーブルを使用不可にしてください。
> disable 'test_table' 0 row(s) in 3.3770 seconds > drop 'test_table' 0 row(s) in 0.6010 seconds
alter(テーブル定義変更)
alter コマンドでテーブル定義を変更します。 ColumnFamily の属性を変更する場合は以下の通りです。基本的に ColumnFamily が存在した場合は変更、存在しなかった場合は追加となります。
-- ColumnFamily のみ指定。 > alter 'test_table', 'cfamilyX' -- 1つの ColumnFamily と変更する属性を指定。 > alter 'test_table', NAME=>'cfamilyX', TTL=>10 -- 復数の ColumnFamily と変更する属性を指定。存在しない ColumnFamily が混じっていても問題ない。 > alter 'test_table', {NAME=>'cfamily1', VERSIONS=>3}, {NAME=>'cfamily2', VERSIONS=>5} -- 1つの ColumnFamily を削除。 > alter 'test_table', NAME=>'cfamily5', METHOD=>'delete' > alter 'test_table', 'delete'=>'cfamily5' -- 復数の ColumnFamily を削除。 > alter 'test_table', {NAME=>'cfamily5', METHOD=>'delete'}, {NAME=>'cfamily6', METHOD=>'delete'} > alter 'test_table', {'delete'=>'cfamily2'},{'delete'=>'cfamily3'}
テーブル属性を変更する場合は以下の通りです。
-- テーブル属性を変更。 > alter 'test_table', MAX_FILESIZE=>'134217728' -- テーブルの属性変更と ColumnFamily の属性変更を同時に実行。 > alter 'test_table', {MAX_FILESIZE=>'134217728'}, {NAME=>'cfamily1', TTL=>999}, {NAME=>'cfamily5', METHOD=>'delete'}
TTL を FOREVER にしたい場合はInteger.MAX_VALUE
の値をセットするといけた。
> alter 'test_table', {NAME => 'contents', TTL => 0x7fffffff} > describe 'test_table' {NAME => 'contents', ...., TTL => 'FOREVER', ...}
list(一覧表示)
list コマンドでテーブルの一覧を確認します。Namespace名:Table名
の形式で表示されますが、Namespace が default の場合は Table 名のみ表示されます。
-- 全Namespace(hbase以外)のテーブルリストを表示 > list -- 正規表現に一致するテーブルリストを表示 > list '正規表現'
特定の Namespace に所属する全てのテーブル一覧を表示したい場合はlist_namespace_tables
コマンドを使用します。
> list_namespace_tables 'hbase' TABLE meta namespace 2 row(s) in 0.3310 seconds
参考リンク
Apache HBase ™ Reference Guide
HBase shell commands | Learn HBase