2012-08-14 100 views
2

我的Hbase表的ROWID以这样一种方式进行结构化,它的第一个子字符串是一个固定的字符串,例如ABC,其余的是可变的。例如我的rowid的样子:如何在ROWID中使用LIKE在HBase中进行搜索?

ABC_12345 
ABC_89778 
ABC_64994 
... 
.. 

我怎么能写HBASE查询以这样的方式,如果我提供“ABC”,我得到的所有行使用一些行筛选器实现扫描我的表。

任何帮助,将不胜感激。

感谢 ü

回答

4

您可以同时使用,具有RegexStringComparator过滤器Scan。类似这样的:

String regEx = "^ABC"; 
Filter regExFilter = new RowFilter(CompareFilter.CompareOp.EQUAL, 
         new RegexStringComparator(regEx)); 
Scan scan = new Scan(); 
scan.setFilter(regExFilter); 
+0

你怎么能做到这一点在HBase的外壳。 – 2016-10-18 05:17:58

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