フィルタリストを使用して範囲内の行を取得しようとしていますが、成功しません。 以下は私のコードスニペットです。HBase "between" Filters
私は1000年と2000年
HTableテーブル=新しいHTable(confに、 "TRAN_DATA")との間でデータを取得したいです。
1 SingleColumnValueFilterフィルター2 =新しいSingleColumnValueFilter(Bytes.toBytes( "トランザクション")、 Bytes.toBytes( "TRANS_ID")、 CompareFilter.CompareOp.LESS、新しいを使用して、すべての可能な方法で試み
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();
SubstringComparator( "5000"));
- SingleColumnValueFilterフィルター2 =新しいSingleColumnValueFilter(Bytes.toBytes( "トランザクション")、 Bytes.toBytes( "TRANS_ID")、 CompareFilter.CompareOp.LESS、Bytes.toBytes( "5000"));上記のどれも仕事:(
正確には機能しないものはありますか? –
hbaseのフィルタの大部分が行フィルタであるため、特定の列にフィルタを追加してデータを取得する方法と同じ結果を得ることができません。 –
キーをバイト値として保存していますかInt/Longの文字列またはバイトの値? –