2012-11-23 4 views
0

HBase 테이블에 20 개의 행이 있고 1부터 20까지의 긴 형식으로 된 행키가 있습니다. 여기에서 행키가 1부터 시작하는 레코드를 쿼리하고 싶습니다. PrefixFilterBinaryPrefixComparator으로 시도했지만 행키가 문자열 fromat에있는 경우에만 잘 작동합니다. 그것이 길면 쿼리는 모든 레코드를 반환합니다. 이것을 어떻게 할 수 있습니까?HBase의 RowFilter

Scan scan=new Scan(); 
Filter rowFilter=new RowFilter(CompareOp.EQUAL, new BinaryPrefixComparator(Bytes.toBytes("1"))); 
//Filter rowFilter=new RowFilter(CompareOp.NOT_EQUAL, new BinaryPrefixComparator(Bytes.toBytes("1"))); 
scan.setFilter(rowFilter); 
ResultScanner resultscanner=htable.getScanner(scan); 

답변

1

행 키 long 경우

필터 식, 당신은 당신의 쿼리가 아닌 문자열에 long로 참조해야합니다.
1 : Bytes.toBytes("1") 대신에 Bytes.toBytes(1L)을 사용하십시오.

당신은 범위를 설정할 수 있습니다

는 스캔 할 :

scan.setStartRow(Bytes.toBytes(1L)); 
scan.setStopRow(Bytes.toBytes(21L)); //since stopRow is exclusive 
관련 문제