일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Spring Boot
- Linux
- Storm
- apache storm
- hibernate
- Spring Batch
- Spring
- hdfs
- nginx
- Java
- scala
- elasticsearch
- Gradle
- hadoop
- Domain Driven Design
- Hbase
- DDD
- Angular2
- 스프링 배치
- elastic search
- design pattern
- docker
- 엘라스틱서치
- intellij
- 제주
- 도메인주도설계
- spark
- Clean Code
- SBT
- Spring XD
- Today
- Total
욱'S 노트
HBase - HBase 명령어(DML) 본문
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 |