我想檢索範圍內的行,使用過濾器列表,但我不成功。 以下是我的代碼片段。HBase之間「過濾器」
欲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的字符串或字節值? –