如何在 HBase 过滤器中混合 MUST_PASS_ALL 和 MUST_PASS_ONE?
How do I mix MUST_PASS_ALL and MUST_PASS_ONE in HBase filters?
我有一个 HBase 扫描,其中有一个 ColumnPrefixFilter
和多个 FuzzyFilter
,如下所示:
FilterList filterList = new FilterList();
filterList.addFilter(new FuzzyFilter(...));
filterList.addFilter(new FuzzyFilter(...));
filterList.addFilter(new ColumnPrefixFilter(...));
Scan s = new Scan();
s.setFilter(filterList);
有没有一种方法可以在 FuzzyFilter
上使用 MUST_PASS_ONE
,然后在 ColumnPrefixFilter
上使用 MUST_PASS_ALL
并结合 FuzzyFilter
的集合小号?
所以我正在寻找这样的东西:
ColumnPrefixFilter
和 (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。
FilterList
本身就是一个Filter
,所以把它们组合起来就可以了
FilterList fuzzy = new FilterList(MUST_PASS_ONE, fuzzy1, fuzzy2);
FilterList main = new FilterList(MUST_PASS_ALL, prefixFilter, fuzzy);
s.setFilter(main);
我有一个 HBase 扫描,其中有一个 ColumnPrefixFilter
和多个 FuzzyFilter
,如下所示:
FilterList filterList = new FilterList();
filterList.addFilter(new FuzzyFilter(...));
filterList.addFilter(new FuzzyFilter(...));
filterList.addFilter(new ColumnPrefixFilter(...));
Scan s = new Scan();
s.setFilter(filterList);
有没有一种方法可以在 FuzzyFilter
上使用 MUST_PASS_ONE
,然后在 ColumnPrefixFilter
上使用 MUST_PASS_ALL
并结合 FuzzyFilter
的集合小号?
所以我正在寻找这样的东西:
ColumnPrefixFilter
和 (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。
FilterList
本身就是一个Filter
,所以把它们组合起来就可以了
FilterList fuzzy = new FilterList(MUST_PASS_ONE, fuzzy1, fuzzy2);
FilterList main = new FilterList(MUST_PASS_ALL, prefixFilter, fuzzy);
s.setFilter(main);