HBase 데이터 조작 명령 - put, get, delete, deleteall, scan, count, truncate
Data Manipulation commands
여기서는 데이터를 조작하는 HBase Shell 명령에 대해서 소개한다.
put - 데이터 등록/변경
여기에서는 HBase 테이블에서 데이터를 생성하고 변경하는 방법을 소개한다.
HBase에 다음과 같은 테이블을 생성할 것이다.
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