안단테 안단테

14. 클라이언트 API: 고급기능 본문

IT 기술/BigData

14. 클라이언트 API: 고급기능

안단테에 2023. 2. 6. 09:51
728x90
반응형

14. 클라이언트 API: 고급기능

 

4.1 필터

 

HBase 의 필터는 테이블에 젖아된 데이터를 가지고 작업할 대 효율성을 배우 높여주는 강력한 기능

 

4.1.1. 필터소개

 

기본 API로 해결할 수 ㅇ벗는 로우, ㅋ러럼 키, ㄱ밧 등을 필털이한느 문제는 필터를 사용해 해결

모든 필터는 실제로 서버측에 적용되는데, 이를 조건절 푸시다운이라함

필터는 클라이언트에 전송할 데이터에 대해 갖아 효율적인 검색을 보장

 

1. 클라이언트에서 Filter를 가진 Scan객체 생성

2. Filter를 가진 Scan 객체의 직렬화된 데이터 전송

3. 리전서버에서 Filter를 가진 Scan 객체를 역직렬화 하여 내부 스캐너에서 사용

 

- 필터의 계층구조

최하단은 Filter 인터페이스 및 FilterBase추상 클래스

 

FilterBase : 실제 필터 클래스에서 코드 중복을 피하기 위해 빈 껍데기 또는 뼈대 구현

 

필터는 자신이 적용된 로우 전체 데이터에 접근할 수 있다

 

- 비교연산자

CompareFilter 계열 필터가 FilterBase 기본 클래스에 Compare()기능 하나 추가

-> 비교결과 해석하는 방법을 결정하는 연산자 유형을 사용자가 제공해주어ㅑ됨

비교연산자는 필터가 적용될 때 어떤 값을 포함하고 배제할지 정함

 

- 비교자( WritableByteArrayComparable에서 파생)

다양한 값 및 키를 다양한 방식으로 비교하는데 필요

각 셀을 비교할 값을 사용자가 지정

 

4.1.2 비교필터 - CompareFilter

 

비교필터는 앞서 밝힌 바와 같이 비교 연산자와 비교자 인스턴스를 파라미터로 받는다

 

- 로우필터 - RowFIlter

로우 키 기반 데이터 필터링을 수행하게 해준다

 

- 패밀리필터 - FamilyFilter

로우 안의 컬럼패밀리의 비교에 사용 (컬럼패밀리가 존재하지 않다면 keyValue 몫)

 

- 퀄리파이어필터 - QualifierFilter

테이블에서 특정 컬럼을 필터링 할 수 있게 해준다

 

- 값 필터 - ValueFilter

특정값을 가지는 컬럼만을 포함시킬 수 있게 해준다

RegexStringComparator와 결합되면 구문 포현을 이용한 강력한 탐색 기능 제공

 

- 의존 컬럼 필터 - DependentColumnFilter

더 복잡한 필터 기능 제공

다른 컬럼이 필터링될지 여부를 결정하는 의존 컬럼을 지정

연산자 및 비교자를 생략하고 모든 컬럼을 포함한 값 필터링을 비활성화할 수 있는 생성자를 제공

참조 컬럼만을 기반으로 타임스탬프 필터를 수행하게 해줌

 

4.1.3 전용필터

 

FilterBase를 직접 상속하여 더 상세한 적용 분야에 대응

 

- 단일 컬럼값 필터 - SingleColumnValueFilter

ㅁ컬럼이 정확히 하나 일 대 단일 컬럼값 필터를 사용

getFilterIfMissing()를 true로 설정하면 참조 컬럼이 없는 로우가 결과에 포함되지 않는다.

setLatestVersionOnly()를 true로 설정하면 참조 컬럼의 최근 버전만 검사

 

- 단일 컬럼값 제외 필터 -SingleColumnValueExcludeFilter

생성자에 전달한 참조 컬럼이 결과값에서 제외된다.

 

- 접두어 필터 - PrefixFilter

필터 인스턴스를 인스턴스화할 때 접두어를 지정하여, 이 접두어와 ㅇ리치하는 모든 로우가 클라이언트에 반환

scan연산에 상당히 유용

scan은 필터가 접두어 보다 큰 로우 키를 만났을 때 알아서 작업을 종료

 

- 페이지 필터 - PageFilter

로우 단위로 페이지 구분 가능

pagesize 파라미터를 지정하여 페이지당 몇 개의 로우 반환할지 지정

페이지 필터 작업과 물리적으로 분리된 서버간에 필터는 서로 다른 리전 서버에서 병렬적으로 실행되며 현재 상태를 유지하거나 각 리전 서버 영역 바끙로 전송할 수 없다

-> 각 필터는 최소한 pageCount에 지정한 개수의 로우까지 스캔

클라이언트 코드에서는 반환받은 마지막 로우를 기억하고 있다가, 다음 번 이터레이션을 시작할 때는 필터 속성을 그대로 유지한 채 스캔에 시작 로우로 설정

 

- 키 전용 필터 - KeyOnlyFilter

필터가 처리한 컬럼 및 셀을 변경할 수 있는 기능ㅇ르 사용

처리한 데이터에 KeyvalueConvertToKeyOnly(boolean)메소드를 호출하여 데이터 부분을 제거

lenAsVal 파라미터가 있어 convertTokeyOnly()메소드에 그대로 전달되어 필터에서 처리하는 KeyValue인스턴스의 값 부분을 제거하는데 사용

-> 어플리케이션에서 컬럼을 재빨리 반복한다

 

- 최초 키 전용 필터 - FirstKeyOnlyFilter

각 로우에서 Hbase 내부적으로 정렬된 첫 번째 컬럼에 접근하는 긴으 제공

로우 존재 or 로우의 개수를 세는 어플리케이션에서 사용

 

- 종료 로우 포함 필터 - InclasiveStopFilter

지정한 종료 로우를 스캔 결과에 포함

 

- 타임스탬프 필터 -TiemStampFilter

스캔 결과에 포함되는 데이터를 버전 단위까지 미세조정하려면... 사용

 

- 컬럼 개수 제한 필터 - ColumnCountGetFilter

로우당 지정한 최대 개수만큼의 컬럼만 반환

 

- 컬럼 페이지 필터 -ColumnPageInctionFilter

한 로우 안의 컬럼을 대상으로 페이지를 구분하는데 사용

offset에 지정한 수만큼 컬럼 건너뛰고, limit에 지정한 수만큼의 컬럼을 포함

columnPaginactionFilter(int limit, int offset)

728x90
반응형

'IT 기술 > BigData' 카테고리의 다른 글

16. 클라이언트 API 관리기능 - 2  (1) 2023.02.06
15. 클라이언트 API 관리기능 - 1  (0) 2023.02.06
13. HBase 클라이언트 API  (0) 2023.02.06
12. HBase 요구사항  (1) 2023.02.03
11. HBase 소개 - 4  (0) 2023.02.03
Comments