是否有与Accumulo'相当的HBase 1.2;什么是RegExFilter?

是否有与Accumulo'相当的HBase 1.2;什么是RegExFilter?,regex,hbase,accumulo,Regex,Hbase,Accumulo,我在这方面有一定的背景,我被指示去分析这个问题。HBase 1.2是否具有与Accumulo中的RegExFilter等效的内置功能?我还没见过,所以我在下面尝试了一些功能相当的东西 在Accumulo方面 Accumulo的RegExFilter支持以下字段的任意组合中的正则表达式: 划船 柱族 列限定符 价值观 RegExFilter有一个选项支持表达式中的“或”行为——如果任何表达式匹配,则返回条目 RegExFilter有一个支持子字符串匹配的选项 在HBase 1.2方面,我的理解

我在这方面有一定的背景,我被指示去分析这个问题。HBase 1.2是否具有与Accumulo中的RegExFilter等效的内置功能?我还没见过,所以我在下面尝试了一些功能相当的东西

在Accumulo方面

Accumulo的RegExFilter支持以下字段的任意组合中的正则表达式:

  • 划船
  • 柱族
  • 列限定符
  • 价值观
RegExFilter有一个选项支持表达式中的“或”行为——如果任何表达式匹配,则返回条目

RegExFilter有一个支持子字符串匹配的选项

在HBase 1.2方面,我的理解是

  • RegexStringComparator可用于通过将字段与CompareFilter实现一起使用来过滤字段
  • RowFilter可以基于键的行键部分进行筛选
  • 限定符筛选器可以基于键的列限定符部分进行筛选
  • ValueFilter可以基于该值进行筛选
  • 可以将多个过滤器添加到过滤器列表中,过滤器列表本身是过滤器的子类,和/或行为可以在过滤器列表中的过滤器中定义
在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?
List filters=new ArrayList();
//世界其他地区的正则表达式
if(rowRegEx!=null){
filters.add(新的行过滤器)(CompareOp.EQUAL,
新的RegexStringComparator(rowRegEx));
}
//列族的正则表达式
if(colFamRegEx!=null){
filters.add(新系列过滤器)(CompareOp.EQUAL,
新的RegexStringComparator(colFamRegEx));
}
//列限定符的正则表达式
if(colQualRegEx!=null){
filters.add(新限定符)filter(CompareOp.EQUAL,
新的RegexStringComparator(colQualRegEx));
}
//值的正则表达式
if(valRegEx!=null){
filters.add(新值filter(CompareOp.EQUAL,
新的RegexStringComparator(valRegEx));
}
//对于“或”行为,请使用FilterList.Operator.MUST\u PASS\u ONE
过滤器列表过滤器列表=新过滤器列表(
FilterList.Operator.MUST_PASS_ALL,filters);
扫描=新扫描();
scan.setFilter(过滤器列表);
//TODO如何模拟RegExFilter的“子字符串匹配”行为?
问题1我的(未经测试的)代码片段是否与Accumulo 1.6的RegExFilter一样是一个合法的HBase 1.2版本?如果不是,还有什么可以改进的

问题2我假设Accumulo的RegExFilter的“子字符串匹配”选项可以在HBase 1.2中使用定义稍有不同的正则表达式来实现。是否有一种更简单的方法来实现这一点,以便理想情况下我可以在Accumulo和HBase中使用相同的正则表达式