嗨,我是新來的hbase和在它的學習階段。 我使用hbase shell創建了一個表並將值放入該表中。 但現在當我想用一些過濾這樣獲得的公益價值:當我運行這個程序,我得到不同的結果爲什麼SingleColumnValueFilter在< and >運算符上不返回真正的答案?
HTable table = new HTable(conf, "test");
List<Filter> filters = new ArrayList<Filter>();
SingleColumnValueFilter colValFilter = new SingleColumnValueFilter(Bytes.toBytes("col"), Bytes.toBytes("age")
, CompareFilter.CompareOp.GREATER, new BinaryComparator(Bytes.toBytes("118")));
colValFilter.setFilterIfMissing(false);
filters.add(colValFilter);
FilterList fl = new FilterList(FilterList.Operator.MUST_PASS_ALL, filters);
Scan s = new Scan();
s.setFilter(fl);
ResultScanner ss = table.getScanner(s);
JSONArray arr=new JSONArray();
for(Result r:ss){
JSONObject obj=new JSONObject();
for(KeyValue kv : r.raw()){
String column=new String(kv.getQualifier());
String value=new String(kv.getValue());
obj.accumulate(column, value);
}
arr.put(obj);
}
現在。就像我收到的年齡小於118的用戶一樣,但仍然顯示。
我的問題:
爲什麼SingleColumnValueFilter做到這一點? 任何其他方式來解決這個問題?
你的列名真的年齡或年齡?如果您在創建過程中沒有引用您的列名,HBase會很煩人... – Ko2r 2014-09-25 14:37:06
是的,我確定它的年齡不是年齡或年齡或aGe。 – Mr37037 2014-09-25 14:43:35
我使用hbase shell命令將值放入表中:'test','r1','col:age','19'這是一種有效的方法嗎? – Mr37037 2014-09-25 14:44:56