我的Hbase表的ROWID以这样一种方式进行结构化,它的第一个子字符串是一个固定的字符串,例如ABC,其余的是可变的。例如我的rowid的样子:如何在ROWID中使用LIKE在HBase中进行搜索?
ABC_12345
ABC_89778
ABC_64994
...
..
我怎么能写HBASE查询以这样的方式,如果我提供“ABC”,我得到的所有行使用一些行筛选器实现扫描我的表。
任何帮助,将不胜感激。
感谢 ü
我的Hbase表的ROWID以这样一种方式进行结构化,它的第一个子字符串是一个固定的字符串,例如ABC,其余的是可变的。例如我的rowid的样子:如何在ROWID中使用LIKE在HBase中进行搜索?
ABC_12345
ABC_89778
ABC_64994
...
..
我怎么能写HBASE查询以这样的方式,如果我提供“ABC”,我得到的所有行使用一些行筛选器实现扫描我的表。
任何帮助,将不胜感激。
感谢 ü
您可以同时使用,具有RegexStringComparator
过滤器Scan
。类似这样的:
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
你怎么能做到这一点在HBase的外壳。 – 2016-10-18 05:17:58