読者です 読者をやめる 読者になる 読者になる

HBaseShellのコマンド使用方法(テーブル管理)

HBase
スポンサーリンク

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