필터 목록을 사용하여 범위 내에서 행을 검색하려고하는데 성공하지 못했습니다. 다음은 제 코드입니다.HBase "between"필터
나는 1000 년과 2000 년 사이에
HTable 테이블 = 새로운 HTable (conf의 "TRAN_DATA을") 데이터를 검색 할;
List<Filter> filters = new ArrayList<Filter>();
SingleColumnValueFilter filter1 = new SingleColumnValueFilter(Bytes.toBytes("TRAN"),
Bytes.toBytes("TRAN_ID"),
CompareFilter.CompareOp.GREATER, new BinaryComparator(Bytes.toBytes("1000")));
filter1.setFilterIfMissing(true);
filters.add(filter1);
SingleColumnValueFilter filter2 = new SingleColumnValueFilter(Bytes.toBytes("TRAN"),
Bytes.toBytes("TRAN_ID"),
CompareFilter.CompareOp.LESS,new BinaryComparator(Bytes.toBytes("2000")));
filters.add(filter2);
FilterList filterList = new FilterList(filters);
Scan scan = new Scan();
scan.setFilter(filterList);
ResultScanner scanner1 = table.getScanner(scan);
System.out.println("Results of scan #1 - MUST_PASS_ALL:");
int n = 0;
for (Result result : scanner1) {
for (KeyValue kv : result.raw()) {
System.out.println("KV: " + kv + ", Value: "
+ Bytes.toString(kv.getValue()));
{
n++;
}
}
scanner1.close();
새로운
1 SingleColumnValueFilter의 필터 2 = 새로운 SingleColumnValueFilter (Bytes.toBytes ("TRANSACTIONS") Bytes.toBytes ("TRANS_ID"을 사용하여 가능한 모든 방법) CompareFilter.CompareOp.LESS으로 시도 SubstringComparator ("5000"));
- SingleColumnValueFilter 필터 2 = 새로운 SingleColumnValueFilter (Bytes.toBytes ("TRANSACTIONS") Bytes.toBytes ("TRANS_ID") CompareFilter.CompareOp.LESS, Bytes.toBytes ("5000")); 위 중에
정확히 작동하지 않는 것은 무엇입니까? –
hbase에있는 대부분의 필터가 행 필터이고, 특정 열에 필터를 추가하여 데이터를 검색하는 방법과 같이 동일한 결과를 구현하는 다른 방법이 있는지 정확한 결과를 얻지 못했습니다. –
키를 바이트 값으로 저장 하시겠습니까? Int/Long의 문자열 또는 바이트 값? –