2016-10-11 77 views
0

如果我有一排按键,例如如何设置开始和结束行键HBASE

a_c 
b_c 
j_f 
f_d 
d_c 

我应该得到的所有行匹配_c。如何在这里设置开始和停止行键。我试图从扫描结果中取出开始和停止行键,而不是使用rowfilter或其他过滤器类型。

回答

0

如果您不想使用RowFilter,则可以编写自己的过滤器功能。但我建议你使用PrefixFilter如果你不能写自己的过滤功能,并且不希望使用RowFilter

例为Java:

byte[] prefixF= Bytes.toBytes("_c"); 
Scan scan = new Scan(prefixF)); 
PrefixFilter prefixFilter = new PrefixFilter(prefixF); 
scan.addFilter(prefixFilter); 
ResultScanner resultScanner = table.getScanner(scan); 

上面的代码等于hbase> scan 'YourTablename', { FILTER => "PrefixFilter('_c')"}

+0

谢谢为你的答案。我不想使用任何自定义过滤器或甚至是rowfilter的原因是,所有这些都涉及全表扫描。这就是我试图用启动和停止行键来解决的原因。是否有可能获得具有一些正则表达式的开始和停止行键的扫描结果? –

+0

使用扫描功能可以设置'starRow'和'stopRow':'扫描(byte [] startRow,byte [] stopRow)' 为指定的行范围创建扫描操作。 它还允许你设置'startRow'和'filter',你应该使用[Filter](https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/filter/Filter.html)class hbase:'Scan(byte [] startRow,Filter filter)'。我认为可以用'startRow'和'stopRow'创建一个函数,并且在函数内部,你应该使用正则表达式(Pattern,Match来过滤结果,如果你找到另一个解决方案,请告诉我:) –

相关问题