我有Accumulo 1.6的背景,我已被指示分析API of HBase 1.2。 HBase 1.2是否具有与Accumulo中的RegExFilter等效的内置功能?我没见过一个,所以下面我试图破解一些在功能上等同的东西。
在Accumulo方面......
Accumulo的RegExFilter支持这些字段的任意组合中的正则表达式:
RegExFilter可以选择支持" OR"跨表达式的行为 - 如果任何表达式匹配则返回该条目。
RegExFilter有一个选项可以支持子字符串上的匹配。
在HBase 1.2方面,我的理解是......
在HBase中,为了模仿Accumulo的RegExFilter,我可以做类似以下的事情:
List<Filter> filters = new ArrayList<Filter>();
// Regex for row
if (rowRegEx != null) {
filters.add(new RowFilter(CompareOp.EQUAL,
new RegexStringComparator(rowRegEx));
}
// Regex for column family
if (colFamRegEx != null) {
filters.add(new FamilyFilter(CompareOp.EQUAL,
new RegexStringComparator(colFamRegEx));
}
// Regex for column qualifier
if (colQualRegEx != null) {
filters.add(new QualifierFilter(CompareOp.EQUAL,
new RegexStringComparator(colQualRegEx));
}
// Regex for value
if (valRegEx != null) {
filters.add(new ValueFilter(CompareOp.EQUAL,
new RegexStringComparator(valRegEx));
}
// For "or" behavior, use FilterList.Operator.MUST_PASS_ONE
FilterList filterList = new FilterList(
FilterList.Operator.MUST_PASS_ALL, filters);
Scan scan = new Scan();
scan.setFilter(filterList);
// TODO How to mimic "match on substring" behavior of RegExFilter?
问题1 我的(未经测试的)代码段是否与Accumulo 1.6的RegExFilter等同于合法的HBase 1.2?如果没有,那么可以改进什么?
问题2 我认为Accumulo的RegExFilter&#34;匹配子串&#34;可以使用稍微不同定义的正则表达式在HBase 1.2中实现选项。有没有那么笨重的方法来做到这一点,所以理想情况下我可以在Accumulo和HBase中使用相同的正则表达式?