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', 'Jonh 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 값으로 emp 테이블에 등록하겠다.

hbase(main):002:0> put 'order', '101', 'customer:name', 'Jonh 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

전체 테이블을 등록면 다음과 같은 결과가 표시된다.

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=Jonh 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 명령을 사용하여 기존 셀 값을 변경할 수 있다. 구문은 데이터를 등록할 때와 동일하다.

아래와 같이 새로운 값을 지정하면 된다.

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=Jonh 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=Jonh White
 sales:amount                     timestamp=1686908401071, value=400.00
 sales:product                    timestamp=1686908398256, value=Chairs
1 row(s)
Took 0.3162 seconds

특정 row 조회

다음은 get 명령을 사용하여, 특정 열을 조회하는 구문이다.

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

다음은 HBase 테이블의 특정 컬럼을 조회하는 예제이다.

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

delete - 테이블의 특정 셀 삭제

delete 명령을 사용하여 테이블의 특정 셀을 삭제할 수 있다. delete 명령의 구문은 다음과 같다.

delete '<table name>', '<row id>', '<column name>', '<time tamp>'

다음은 특정 셀을 삭제하는 예이다. 여기에서 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=Jonh White
 sales:amount                     timestamp=1686908401071, value=400.00
 sales:product                    timestamp=1686908398256, value=Chairs
1 row(s)
Took 0.2196 seconds

deleteall - 테이블의 모든 셀 삭제

deleteall 명령을 사용하여, 행의 모든 ​​셀을 삭제할 수 있다. 다음은 deleteall 명령 구문이다.

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

다음은 order 테이블의 1행의 모든 ​​셀을 삭제하는 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', 'Jonh 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=Jonh 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



최종 수정 : 2023-06-16