본문 바로가기
Big Data

[HBASE] 간단 명령어

by 유주원 2018. 9. 26.

이직하기 전에는 Hbase를 접할 경우가 1도 없었는데, 이직 후 Hbase를 가지고 노는 일이 많기에 사용법을 좀 정리해 보기로 했다.


우선 접속!


아래와 같이 접속하면 된다.


 $> hbase shell


만약에 customizing한 config 파일이 있고 이 설정대로 접속하고 싶다면?


$> hbase --config <폴더 경로> shell

ex) hbase --config /working/hbase shell


위의 명령이 성공하면 hbase shell 내부로 진입 한 것을 확인할 수가 있다.

우선 snapshot list를 확인해 보자.


hbase> list_snapshots


화면에 snapshot 리스트들이 출력되는 것을 확인할 수가 있다.

불필요한 snapshot은 아래 명령을 써서 지워주자.


hbase> delete_snapshot 'snapshot이름'


아래 명령을 통해 table list도 확인해 볼 수가 있다.


hbase> list


table 을 삭제할 때에는 우선 disable을 한 번 시켜준 후 drop을 해야 한다.


hbase> disable 'table 이름'

hbase> drop 'table 이름'


그럼 이제 hbase를 통해 데이터를 가져와 보자. 

우선 count라는 명령어가 있는데, 이건 1000row 단위로 hbase를 읽어주는 기능을 한다.

(single로 돌기 때문에 느리다. 적은 데이터가 hbase에 저장되어 있는 경우에만 row가 얼마나 있는지 확인하는 용도로 쓰자.)


hbase> count table이름


get 명령어를 통해 해당하는 키의 데이터를 가져올 수도 있다.


hbase> get 'table이름', '키'

ex) get 'test', '1234543'


키에 해당하는 row를 삭제하는 것도 가능하다.


hbase> deleteall 'table이름', '키'

ex) deleteall 'test', '1234543'


정확한 key를 모를 경우에는 scan을 통해 prefix 값만으로 row정보를 가져올 수도 있다.


hbase> scan 'table 이름', {STARTROW=>'1234', ENDROW=>'1235'}


위와 같이 명령하면 키값의 처음 4자리가 1234이고 1235전까지의 모든 데이터를 가져온다.


LIMIT을 줘서 값을 끊는 것도 가능하다.


hbase> scan 'table 이름', {STARTROW=>'1234', LIMIT=>10}


특정 컬럼에 대한 조회를 하고 싶다면 아래와 같이 하자.


hbase> scan 'table 이름', {COLUMNS=>'패밀리이름:컬럼이름', LIMIT=>10, FILTER=>"ValueFilter(=, 'binary:조건값')"


and 조건 검색의 경우 아래와 같이 하자.


hbase> scan 'table 이름', {LIMIT=>10, COLUMNS=>['패밀리네임'], FILTER => "(SingleColumnValueFilter('패밀리네임', '필드명',=,'binary:조건값1',true, true)) AND (SingleColumnValueFilter('패밀리네임', '필드명',=,'binary:조건값2',true,true))"}


timestamp 값을 이용한 조회도 가능하다.


hbase> scan 'table 이름', {LIMIT=>10, COLUMNS=>['패밀리네임:필드명'], TIMERANGE=> [start_timestamp, end_timestamp]}