욱'S 노트

HBase - HBase 명령어(DML) 본문

Programming/HBase

HBase - HBase 명령어(DML)

devsun 2014. 12. 26. 16:44

append, count, delete, deleteall, 


get


로우나 테이블 내용을 가지고 온다. 테이블명, 로우 그리고 선택적으로 컬럼 목록, timestamp, timerange 와 버젼을 전달할 수 있다.


Examples:


  hbase> get 'ns1:t1', 'r1'

  hbase> get 't1', 'r1'

  hbase> get 't1', 'r1', {TIMERANGE => [ts1, ts2]}

  hbase> get 't1', 'r1', {COLUMN => 'c1'}

  hbase> get 't1', 'r1', {COLUMN => ['c1', 'c2', 'c3']}

  hbase> get 't1', 'r1', {COLUMN => 'c1', TIMESTAMP => ts1}

  hbase> get 't1', 'r1', {COLUMN => 'c1', TIMERANGE => [ts1, ts2], VERSIONS => 4}

  hbase> get 't1', 'r1', {COLUMN => 'c1', TIMESTAMP => ts1, VERSIONS => 4}

  hbase> get 't1', 'r1', {FILTER => "ValueFilter(=, 'binary:abc')"}

  hbase> get 't1', 'r1', 'c1'

  hbase> get 't1', 'r1', 'c1', 'c2'

  hbase> get 't1', 'r1', ['c1', 'c2']

  hbase> get 't1','r1', {COLUMN => 'c1', ATTRIBUTES => {'mykey'=>'myvalue'}}

  hbase> get 't1','r1', {COLUMN => 'c1', AUTHORIZATIONS => ['PRIVATE','SECRET']}


기본적으로 toStringBinary 포맷을 제공하지만 컬럼에 따라 custom 포맷팅을 지원한다.

사용자는 컬럼명을 명시할때 포매터를 지정할 수 있다. 포맷터는 다음과 같이 명시 될 수 있다.


 1. org.apache.hadoop.hbase.util.Bytes 메소드명 (e.g, toInt, toString)

 2. 커스텀클래스와 메소드명  e.g. 'c(MyFormatterClass).format'.


Example formatting cf:qualifier1 and cf:qualifier2 both as Integers:

  hbase> get 't1', 'r1' {COLUMN => ['cf:qualifier1:toInt',

    'cf:qualifier2:c(org.apache.hadoop.hbase.util.Bytes).toInt'] }


Note 컬럼에 대해서만 포맷터를 명시할 수 없다.(cf:qualifer). 컬럼 패밀리의 모든 칼럼에 포맷터를 명시할 수는 없다.


같은 명령어 컬럼 참조명에 따라서 표현하면 아래와 같다.


  hbase> t.get 'r1'

  hbase> t.get 'r1', {TIMERANGE => [ts1, ts2]}

  hbase> t.get 'r1', {COLUMN => 'c1'}

  hbase> t.get 'r1', {COLUMN => ['c1', 'c2', 'c3']}

  hbase> t.get 'r1', {COLUMN => 'c1', TIMESTAMP => ts1}

  hbase> t.get 'r1', {COLUMN => 'c1', TIMERANGE => [ts1, ts2], VERSIONS => 4}

  hbase> t.get 'r1', {COLUMN => 'c1', TIMESTAMP => ts1, VERSIONS => 4}

  hbase> t.get 'r1', {FILTER => "ValueFilter(=, 'binary:abc')"}

  hbase> t.get 'r1', 'c1'

  hbase> t.get 'r1', 'c1', 'c2'

  hbase> t.get 'r1', ['c1', 'c2']



get_counter, incr, 


put


명시된 테이블/로우/칼럼이 명시된 셀에 값을 입력한다. 추가적으로 timestamp를 입력할 수 있다.

셀 값으로 테이블 'ns1:t1'이나 't1'의 로우 'r1'의 컬럼 'c1'에 시간을 ts1으로 명시를 한다면 다음과 같다.


  hbase> put 'ns1:t1', 'r1', 'c1', 'value'

  hbase> put 't1', 'r1', 'c1', 'value'

  hbase> put 't1', 'r1', 'c1', 'value', ts1

  hbase> put 't1', 'r1', 'c1', 'value', {ATTRIBUTES=>{'mykey'=>'myvalue'}}

  hbase> put 't1', 'r1', 'c1', 'value', ts1, {ATTRIBUTES=>{'mykey'=>'myvalue'}}

  hbase> put 't1', 'r1', 'c1', 'value', ts1, {VISIBILITY=>'PRIVATE|SECRET'}


테이블 레퍼런스 t가 있고, 똑같은 명령을 수행한다면 다음과 같이 표현할 수 있다.


  hbase> t.put 'r1', 'c1', 'value', ts1, {ATTRIBUTES=>{'mykey'=>'myvalue'}}


scan 


테이블을 스캔한다. 테이블명을 전달해야 하며 선택적으로 스캔 명세 목록을 전달할 수 있다. 스캔 명세 목록은 다음중 하나 또는 그 이상을 포함할 수 잇다.

TIMERANGE, FILTER, LIMIT, STARTROW, STOPROW, TIMESTAMP, MAXLENGTH,

or COLUMNS, CACHE


컬럼을 명세하지 않으면, 모든 컬럼이 스캔될 것이다. 컬럼 패밀리의 모든 멤버를 스캔할려면 한정자 없이 컬럼 패밀리만 남긴다. 


필터는 두가지 방식으로 명시할 수 잇다.

1. 필터문자열 사용 - 더 많은 정보는 HBASE-4176 JIRA에 첨부된 Filter Language document에서 확인할 수 있다.

2. 필터의 전체 패키지명 사용


  hbase> scan 'hbase:meta'

  hbase> scan 'hbase:meta', {COLUMNS => 'info:regioninfo'}

  hbase> scan 'ns1:t1', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'}

  hbase> scan 't1', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'}

  hbase> scan 't1', {COLUMNS => 'c1', TIMERANGE => [1303668804, 1303668904]}

  hbase> scan 't1', {REVERSED => true}

  hbase> scan 't1', {FILTER => "(PrefixFilter ('row2') AND (QualifierFilter (>=, 'binary:xyz'))) AND (TimestampsFilter ( 123, 456))"}

  hbase> scan 't1', {FILTER =>  org.apache.hadoop.hbase.filter.ColumnPaginationFilter.new(1, 0)}


수행 속성의 지정


  hbase> scan 't1', { COLUMNS => ['c1', 'c2'], ATTRIBUTES => {'mykey' => 'myvalue'}}

  hbase> scan 't1', { COLUMNS => ['c1', 'c2'], AUTHORIZATIONS => ['PRIVATE','SECRET']}


CACHE_BLOCKS -- 스캐너의 블럭 캐싱을 사용할 지 여부 전환을. 기본은 활성화이다.


  hbase> scan 't1', {COLUMNS => ['c1', 'c2'], CACHE_BLOCKS => false}


RAW -- 스캐너가 삭제 마커와 수집되지 않은 삭제 셀을 포함해서 모든 결과를 반환할지 명시. 이 옵션은 특정 컬럼 옵션과 같이 지정할 수 없다. 기본은 비활성화이다.


  hbase> scan 't1', {RAW => true, VERSIONS => 10}


기본적으로 'toStringBinary' 포맷을 지원하나, 칼럼별로 커스텀 포맷팅을 지원한다. 사용자는 컬럼명에 스캔 명세로서 포맷터를 정의할 수 있다.포맷터는 다음과 같이 명시할 수 있다.


 1. org.apache.hadoop.hbase.util.Bytes 메소드명 (e.g, toInt, toString)

 2. 또는 커스텀 클래스 메소드명 : e.g. 'c(MyFormatterClass).format'.


cf:qualifier1 and cf:qualifier2 integer 포맷팅 예제

  hbase> scan 't1', {COLUMNS => ['cf:qualifier1:toInt', 'cf:qualifier2:c(org.apache.hadoop.hbase.util.Bytes).toInt'] }


칼럼에만 포맷터를 명시할 수 있음에 유의하라. 모든 칼럼이나 칼럼 패밀리에는 포맷터를 명시할 수 없다.

테이블레퍼런스가 있으면 스캔에서도 바로 지정이 가능하다.


  hbase> t = get_table 't'

  hbase> t.scan


위 상황에도 모든 필터렁, 칼럼 옵션 및 위에 명시된 모든 기능을 제공한다.


truncate, truncate_preserve



'Programming > HBase' 카테고리의 다른 글

HBase - HBase 명령어(DDL)  (0) 2014.12.26
HBase - HBase 데이터모델  (0) 2014.12.26
HBase - HBase 시작하기  (0) 2014.12.24
HBase - HBase 개요  (0) 2014.12.24
Comments