2

我的 Hbase 表的 ROWID 的构造方式是,它的第一个子字符串是固定字符串,比如 ABC,其余是可变的。例如,我的 rowids 看起来像:

ABC_12345
ABC_89778
ABC_64994
...
..

如何使用某些行过滤器实现编写 HBASE 查询来扫描我的表,如果我提供“ABC”,我会得到所有行。

任何帮助,将不胜感激。

谢谢你

4

2 回答 2

4

您可以同时使用两者,一个Scan带有RegexStringComparator过滤器。像这样的东西:

String regEx = "^ABC";
Filter regExFilter = new RowFilter(CompareFilter.CompareOp.EQUAL, 
                        new RegexStringComparator(regEx));
Scan scan = new Scan();
scan.setFilter(regExFilter);
于 2012-08-14T14:04:38.960 回答
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

于 2014-07-01T09:11:24.950 回答