HBase データ操作コマンド - put, get, delete, deleteall, scan, count, truncate

Data Manipulation commands

ここでは、データを操作する HBase Shell コマンドを紹介する。

put - データ登録/変更

ここでは、HBase テーブルでデータを作成および変更する方法を紹介する。

HBase に次のようなテーブルを作成する。
HBase Column family

put コマンドを使用して、テーブルに row を登録および変更できる。構文は次のとおりである。

put '<table name>', '<row id>', '<column family>:<column name>', '<value>'

最初の row 登録

create 'order', 'customer', 'sales'

put 'order', '101', 'customer:name', 'John White'
put 'order', '101', 'customer:city', 'Los Angeles'
put 'order', '101', 'sales:product', 'Chairs'
put 'order', '101', 'sales:amount', '400.00'

まずテーブルを作成する。

hbase(main):001:0> create 'order', 'customer', 'sales'
Created table order
Took 5.0510 seconds
=> Hbase::Table - order

最初の row の値をテーブルに登録する。

hbase(main):002:0> put 'order', '101', 'customer:name', 'John White'
Took 0.6725 seconds
hbase(main):003:0> put 'order', '101', 'customer:city', 'Los Angeles'
Took 0.0318 seconds
hbase(main):004:0> put 'order', '101', 'sales:product', 'Chairs'
Took 0.0988 seconds
hbase(main):005:0> put 'order', '101', 'sales:amount', '400.00'
Took 0.0423 seconds

テーブル全体を scan すると、次のような結果が表示される。

hbase(main):006:0> scan 'order'
ROW                               COLUMN+CELL
 101                              column=customer:city, timestamp=1686908392705, value=Los Angeles
 101                              column=customer:name, timestamp=1686908388954, value=John White
 101                              column=sales:amount, timestamp=1686908401071, value=400.00
 101                              column=sales:product, timestamp=1686908398256, value=Chairs
1 row(s)
Took 0.4121 seconds

データ変更

put コマンドを使用して既存 cell の値を変更できる。構文はデータを登録するときと同じである。

次のように新しい値を指定すればよい。

put 'order','101','customer:city','LA'

コマンド実行は次のとおりである。

hbase(main):007:0> put 'order','101','customer:city','LA'
Took 0.0677 seconds
hbase(main):008:0> scan 'order'
ROW                               COLUMN+CELL
 101                              column=customer:city, timestamp=1686909532774, value=LA
 101                              column=customer:name, timestamp=1686908388954, value=John White
 101                              column=sales:amount, timestamp=1686908401071, value=400.00
 101                              column=sales:product, timestamp=1686908398256, value=Chairs
1 row(s)
Took 0.1186 seconds

get - データ照会

get コマンドは、HBase のテーブルからデータを読み取るために使用される。構文は次のとおりである。

get '<table name>', '<row id>'

次の例では、get コマンドを使用して order テーブルの 101 row を照会している。

hbase(main):009:0> get 'order', '101'
COLUMN                            CELL
 customer:city                    timestamp=1686909532774, value=LA
 customer:name                    timestamp=1686908388954, value=John White
 sales:amount                     timestamp=1686908401071, value=400.00
 sales:product                    timestamp=1686908398256, value=Chairs
1 row(s)
Took 0.3162 seconds

特定 row 照会

次は、get コマンドを使用して特定 column を照会する構文である。

get '<table name>', '<row id>', {COLUMN => '<column family>:<column name>'}

次は HBase テーブルの特定 column を照会する例である。

hbase(main):010:0> get 'order', '101', {COLUMN => 'customer:name'}
COLUMN                            CELL
 customer:name                    timestamp=1686908388954, value=John White
1 row(s)
Took 0.1450 seconds

delete - テーブルの特定 cell 削除

delete コマンドを使用して、テーブルの特定 cell を削除できる。delete コマンドの構文は次のとおりである。

delete '<table name>', '<row id>', '<column name>', '<timestamp>'

次は特定 cell を削除する例である。ここでは city を削除する。

hbase(main):011:0> delete 'order', '101', 'customer:city', 1686909532774
Took 0.0917 seconds

再度照会すると、前の put コマンドで変更した 'LA' 値が削除され、既存の 'Los Angeles' 値が再び表示されることがわかる。

hbase(main):012:0> get 'order', '101'
COLUMN                            CELL
 customer:city                    timestamp=1686908392705, value=Los Angeles
 customer:name                    timestamp=1686908388954, value=John White
 sales:amount                     timestamp=1686908401071, value=400.00
 sales:product                    timestamp=1686908398256, value=Chairs
1 row(s)
Took 0.2196 seconds

deleteall - テーブル row のすべての cell 削除

deleteall コマンドを使用して、row のすべての cell を削除できる。次は deleteall コマンドの構文である。

deleteall '<table name>', '<row id>'

次は order テーブルの 1 行のすべての cell を削除する deleteall コマンドの例である。

hbase(main):013:0> deleteall 'order','101'
Took 0.1271 seconds
hbase(main):015:0>

scan コマンドを使用してテーブルを確認する。テーブルデータを削除した後のスナップショットは次のとおりである。

hbase(main):015:0> scan 'order'
ROW                               COLUMN+CELL
0 row(s)
Took 0.0518 seconds

scan - データ照会

scan コマンドは HTable のデータを見るために使用される。scan コマンドを使用してテーブルデータを取得できる。構文は次のとおりである。

scan '<table name>'

まず次のようにデータを入れる。

put 'order', '101', 'customer:name', 'John White'
put 'order', '101', 'customer:city', 'Los Angeles'
put 'order', '101', 'sales:product', 'Chairs'
put 'order', '101', 'sales:amount', '400.00'

次の例では、scan コマンドを使用してテーブルからデータを照会している。

hbase(main):019:0> scan 'order'
ROW                               COLUMN+CELL
 101                              column=customer:city, timestamp=1686912065208, value=Los Angeles
 101                              column=customer:name, timestamp=1686912059341, value=John White
 101                              column=sales:amount, timestamp=1686912074891, value=400.00
 101                              column=sales:product, timestamp=1686912070718, value=Chairs
1 row(s)
Took 0.2649 seconds

count - データ数照会

count コマンドを使用して、テーブルの行数を数えることができる。構文は次のとおりである。

count ‘<table name>' 
hbase(main):020:0> count 'order'
1 row(s)
Took 0.2992 seconds
=> 1

truncate - すべて削除

truncate コマンドは、テーブルを無効化、削除、再作成する。truncate の構文は次のとおりである。

truncate ‘<table name>' 

次は truncate コマンドの例である。ここでは order テーブルを削除して再作成した。

hbase(main):021:0> truncate 'order'
Truncating 'order' table (it may take a while):
Disabling table...
Truncating table...
Took 5.6828 seconds

truncate でテーブルデータを削除した後、scan コマンドを使用して確認する。テーブルに行がないことを確認できる。

hbase(main):023:0> scan 'order'
ROW                               COLUMN+CELL
0 row(s)
Took 1.6790 seconds