是否有一个hbase 1.2的acumulo的regexfilter等价物?

3zwtqj6y  于 2021-06-09  发布在  Hbase
关注(0)|答案(0)|浏览(224)

我有Accumulo1.6的背景,我被要求分析hbase 1.2的api。hbase 1.2是否具有与accumulo中的regexfilter等效的内置函数?我还没见过,所以下面我试图破解一些功能相当的东西。
在accumulo方面。。。
accumulo的regexfilter支持以下字段的任意组合中的正则表达式:

柱族
列限定词
价值
regexfilter有一个选项支持表达式中的“or”行为——如果任何表达式匹配,则返回条目。
regexfilter有一个支持子字符串匹配的选项。
在hbase 1.2方面,我的理解是。。。
regexstringcomparator可以通过将字段与comparefilter实现一起使用来过滤字段。
rowfilter可以基于键的行键部分进行过滤
限定符筛选器可以基于键的列限定符部分进行筛选
valuefilter可以基于值进行过滤
可以向filterlist添加多个过滤器,它本身是filter的子类,并且可以在filterlist中的过滤器之间定义和/或行为。
在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我的(未经测试的)代码片段看起来像是与Accumulo1.6的regexfilter等价的HBASe1.2吗?如果没有,还有什么可以改进的?
问题2我假设acumulo的regexfilter的“子字符串匹配”选项可以在hbase1.2中使用定义稍有不同的正则表达式实现。有没有一种更简单的方法来实现这一点,以便理想情况下我可以在accumulo和hbase中使用相同的正则表达式?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题