【发布时间】:2016-10-11 09:40:28
【问题描述】:
如果我有像
这样的行键a_c
b_c
j_f
f_d
d_c
我应该得到所有匹配 _c 的行。如何在此处设置开始和停止行键。我试图从开始和停止行键中获取扫描结果,而不是使用 rowfilter 或其他过滤器类型。
【问题讨论】:
如果我有像
这样的行键a_c
b_c
j_f
f_d
d_c
我应该得到所有匹配 _c 的行。如何在此处设置开始和停止行键。我试图从开始和停止行键中获取扫描结果,而不是使用 rowfilter 或其他过滤器类型。
【问题讨论】:
如果您不想使用RowFilter,可以编写自己的过滤器函数。但是如果你自己写不了过滤函数又不想用RowFilter,我建议你用PrefixFilter
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')"}
【讨论】:
starRow 和stopRow:Scan(byte[] startRow, byte[] stopRow) 为指定的行范围创建扫描操作。它还允许您设置startRow 和filter,您应该使用Filter hbase 类:Scan(byte[] startRow, Filter filter) 。我认为可以使用startRow 和stopRow 创建一个forScan 类的函数,并且在函数内部,您应该使用regex(Pattern, Match 来过滤结果。如果您找到其他解决方案,请告诉我:)
您可以使用 Hbase STARTROW 和 ENDROW 过滤器。它基本上扫描行键范围之间的数据(ENDROW 除外)。
scan 'table_name', {STARTROW=>"<start_row_key>", ENDROW=>"<end_row_key>"}
【讨论】: