簡體   English   中英

為什么SingleColumnValueFilter在<和>運算符上不返回正確答案?

[英]Why SingleColumnValueFilter do not returns true answer on < and > operator?

嗨,我是hbase的新手,正在學習它。 我使用hbase shell創建了一個表,並使用shell將值放入該表中。 但是現在當我想使用這樣的過濾器來獲取thos值時:

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 shell中的數據(例如put'test put 'test','r1','col:age','19'存儲為字符串字節,那么當您在BinaryComparator中將其與>進行比較時,它將按字典順序進行比較並返回以'>'開頭的任何字符串

如果要將其表示為整數字節put 'test','r1','col:age','\\x13'則應將其put 'test','r1','col:age','\\x13' (十六進制值)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM