HBase FuzzyRowFilter不起作用

时间:2017-02-22 15:23:39

标签: filter hbase

我有一个由20个字符组成的行键:

  

XXAAAAXXXXXXXXXXXXXXX

我想在2到6位置的AA值上使用FuzzyRowFilter进行扫描。但AA不是固定值。

2 个答案:

答案 0 :(得分:1)

如果你没有修复AAAA,你可以这样做:

FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE);
String[] matches=new String[]{"AAAA","BBBB"};
    for (String match:matches) {
        byte[] rk = Bytes.toBytesBinary("??" + match + "??????????????");
        byte[] fuzzyVal = new byte[]{1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
        List<Pair<byte[], byte[]>> pairs = new ArrayList<>();
        pairs.add(new Pair<>(rk, fuzzyVal));
        filterList.addFilter(new FuzzyRowFilter(pairs));
    }
Scan scan=new Scan();
    scan.setFilter(filterList);

这将根据列表中的所有fuzzyFilters进行过滤,并根据FilterList.Operator.MUST_PASS_ONE进行匹配。 根据您的要求,继续进行相应的修改。

答案 1 :(得分:0)

抱歉,但使用

chromeDriverBinary

我的结果并不仅包含与rowkey对应的行:02160901222720647002

但我表的所有行(和rowkey)