我有一个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(FuzzyFilter
或FuzzyFilter
) 最佳答案
我们可以实现两个不同的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中。