0
如果我有一排按键,例如如何设置开始和结束行键HBASE
a_c
b_c
j_f
f_d
d_c
我应该得到的所有行匹配_c。如何在这里设置开始和停止行键。我试图从扫描结果中取出开始和停止行键,而不是使用rowfilter或其他过滤器类型。
如果我有一排按键,例如如何设置开始和结束行键HBASE
a_c
b_c
j_f
f_d
d_c
我应该得到的所有行匹配_c。如何在这里设置开始和停止行键。我试图从扫描结果中取出开始和停止行键,而不是使用rowfilter或其他过滤器类型。
如果您不想使用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')"}
谢谢为你的答案。我不想使用任何自定义过滤器或甚至是rowfilter的原因是,所有这些都涉及全表扫描。这就是我试图用启动和停止行键来解决的原因。是否有可能获得具有一些正则表达式的开始和停止行键的扫描结果? –
使用扫描功能可以设置'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来过滤结果,如果你找到另一个解决方案,请告诉我:) –