Java 如何在HBase筛选器中混合必须通过所有和必须通过一个?
我有一个带有Java 如何在HBase筛选器中混合必须通过所有和必须通过一个?,java,hbase,Java,Hbase,我有一个带有列前缀过滤器和多个模糊过滤器的HBase扫描,如下所示: FilterList filterList = new FilterList(); filterList.addFilter(new FuzzyFilter(...)); filterList.addFilter(new FuzzyFilter(...)); filterList.addFilter(new ColumnPrefixFilter(...)); Scan s = new Scan(); s.setFilter(f
列前缀过滤器
和多个模糊过滤器
的HBase扫描,如下所示:
FilterList filterList = new FilterList();
filterList.addFilter(new FuzzyFilter(...));
filterList.addFilter(new FuzzyFilter(...));
filterList.addFilter(new ColumnPrefixFilter(...));
Scan s = new Scan();
s.setFilter(filterList);
有没有一种方法可以在FuzzyFilter
s上使用MUST\u PASS\u ONE
,然后在ColumnPrefixFilter
上使用MUST\u PASS\u ALL
并结合FuzzyFilter
s
所以我在找这样的东西:
columnPrifyFilter
和(FuzzyFilter
或FuzzyFilter
)我们可以实现两种不同的过滤器列表来实现这一点。请参阅下面的代码
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);
您可以使用“必须通过”运算符定义主筛选器,并使用“必须通过”运算符定义子筛选器。现在将筛选条件添加到子筛选器中,然后将此子筛选器添加回主筛选器。
FilterList
本身就是一个筛选器,所以只需将它们组合起来即可
FilterList fuzzy = new FilterList(MUST_PASS_ONE, fuzzy1, fuzzy2);
FilterList main = new FilterList(MUST_PASS_ALL, prefixFilter, fuzzy);
s.setFilter(main);