我的 Hbase 表的 ROWID 的构造方式是,它的第一个子字符串是固定字符串,比如 ABC,其余是可变的。例如,我的 rowids 看起来像:
ABC_12345
ABC_89778
ABC_64994
...
..
如何使用某些行过滤器实现编写 HBASE 查询来扫描我的表,如果我提供“ABC”,我会得到所有行。
任何帮助,将不胜感激。
谢谢你
我的 Hbase 表的 ROWID 的构造方式是,它的第一个子字符串是固定字符串,比如 ABC,其余是可变的。例如,我的 rowids 看起来像:
ABC_12345
ABC_89778
ABC_64994
...
..
如何使用某些行过滤器实现编写 HBASE 查询来扫描我的表,如果我提供“ABC”,我会得到所有行。
任何帮助,将不胜感激。
谢谢你
您可以同时使用两者,一个Scan
带有RegexStringComparator
过滤器。像这样的东西:
String regEx = "^ABC";
Filter regExFilter = new RowFilter(CompareFilter.CompareOp.EQUAL,
new RegexStringComparator(regEx));
Scan scan = new Scan();
scan.setFilter(regExFilter);
您也可以尝试 SubstringComparator。来自文档:此比较器与 SingleColumnValueFilter 一起使用,用于根据给定列的值进行过滤。使用它来测试给定的子字符串是否出现在列中的单元格值中。比较不区分大小写。只有 EQUAL 或 NOT_EQUAL 测试对这个比较器有效。
例如:
SingleColumnValueFilter scvf =
new SingleColumnValueFilter("col", CompareOp.EQUAL,
new SubstringComparator("substr"));
https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/filter/SubstringComparator.html