2012-08-14 60 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

相關問題