我有一个ColumnPrefixFilter和多个FuzzyFilter的HBase扫描,如下所示:

FilterList filterList = new FilterList();
filterList.addFilter(new FuzzyFilter(...));
filterList.addFilter(new FuzzyFilter(...));
filterList.addFilter(new ColumnPrefixFilter(...));
Scan s = new Scan();
s.setFilter(filterList);


有什么方法可以在MUST_PASS_ONE上使用FuzzyFilter,然后在MUST_PASS_ALL上使用ColumnPrefixFilter并结合FuzzyFilter的集合?

所以我正在寻找这样的东西:

ColumnPrefixFilter AND(FuzzyFilterFuzzyFilter

最佳答案

我们可以实现两个不同的FilterList来实现这一点。请参考以下代码

    FilterList mainFilter = new FilterList(FilterList.Operator.MUST_PASS_ALL);
    FilterList subFilter = new FilterList(FilterList.Operator.MUST_PASS_ONE);

    subFilter.addFilter(new FuzzyRowFilter(null));
    subFilter.addFilter(new FuzzyRowFilter(null));

    mainFilter.addFilter(new ColumnPrefixFilter(Bytes.toBytes("d")));
    mainFilter.addFilter(subFilter);


您可以使用MUST_PASS_ALL运算符定义一个mainFilter,并使用MUST_PASS_ONE定义一个subFilter。现在,将过滤条件添加到subFilter中,然后再将此subFilter添加回mainFilter中。

08-04 15:07