我的Hbase表的ROWID以这样一种方式构思:第一个子串是一个固定的字符串,比如说ABC和rest是可变的。例如,我的rowid看起来像:
ABC_12345
ABC_89778
ABC_64994
...
..
如何使用某些行过滤器实现将SCASE查询编写到SCAN我的表中,如果我提供'ABC',我将获得所有行。
任何帮助都将不胜感激。
由于 û
答案 0 :(得分:4)
您可以同时使用Scan
和RegexStringComparator
过滤器。像这样:
String regEx = "^ABC";
Filter regExFilter = new RowFilter(CompareFilter.CompareOp.EQUAL,
new RegexStringComparator(regEx));
Scan scan = new Scan();
scan.setFilter(regExFilter);
答案 1 :(得分:0)
您也可以尝试使用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