如何在ROWID中使用LIKE在HBase中搜索?

时间:2012-08-14 00:29:36

标签: hbase

我的Hbase表的ROWID以这样一种方式构思:第一个子串是一个固定的字符串,比如说ABC和rest是可变的。例如,我的rowid看起来像:

ABC_12345
ABC_89778
ABC_64994
...
..

如何使用某些行过滤器实现将SCASE查询编写到SCAN我的表中,如果我提供'ABC',我将获得所有行。

任何帮助都将不胜感激。

由于 û

2 个答案:

答案 0 :(得分:4)

您可以同时使用ScanRegexStringComparator过滤器。像这样:

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