2011-12-29 3 views
1

버전 : HBase Cloudera CDH3U2.
HBase에서 필터링

Java API를 사용하여 HBase에 긴 데이터 유형 값을 삽입했습니다. (1,5,7 여기

 
    Get get = new Get(Bytes.toBytes("111")); 

    FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL); 

singleColumnValueFilter = new SingleColumnValueFilter(columnFamily,columnName , CompareOp.GREATER_OR_EQUAL, Bytes.toBytes(2)); 

    filterList.addFilter(singleColumnValueFilter); 

    get.setFilter(filterList); 
    get.setMaxVersions(10); 

    Result result = hTable.get(get); 

    List keyValueList = result.getColumn(columnFamily, columnName); 

I는 keyValueList.size을 (얻기 m)은 제로이고, I는 어느 필터를 적용하고 있지 않다, 난 keyValueList.size()가 3지고있어, 상기 값은).

5와 7의 결과가 필요합니다.

도와주세요.

미리 감사드립니다.

답변

0

어떻게 값을 저장하나요? Bytes.toBytes ("2") 또는 Bytes.toBytes (2)를 사용하여 저장합니까? 여기서 똑같은 것을 사용해야합니다. 기본 비교기는 BinaryComparator입니다.이 비교기는 바이트 변환 값을 사전 식으로 비교하지만 문자열과 int의 변환 방법이 다릅니다. 따라서 삽입하거나 비교하는 동안 int를 사용하거나 두 경우 모두에서 문자열을 사용합니다.

대신 Bytes.toBytes ("2")를 사용해보십시오.

+0

Bytes.toBytes (2) – Nageswaran

+0

처럼 삽입되었지만 작동하지 않았습니다. 삽입과 검색 모두에서 오래 사용하고 있습니다. – Nageswaran

0

Long 값을 저장하려고한다고 했습니까? 그렇다면 Bytes.toBytes(2L)을 넣지 않았습니까? 이 filterlist 내의 필터 값을 찾지 못하면

0
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL); 

Must_Pass_All 연산자, 즉 게으른 동작, 그것이 실행을 중지한다.

시도 : 어떤 filterlist을 사용하지 그것의 좋은 있도록

FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE); 

는 또한, 당신은 하나 개의 필터 세트가 있습니다. 테이블에 둘 이상의 필터를 적용하려는 경우에만 사용하십시오.

관련 문제