如何设置开始和结束行键 HBASE
Posted
技术标签:
【中文标题】如何设置开始和结束行键 HBASE【英文标题】:How to set start and end row key HBASE 【发布时间】:2016-10-11 09:40:28 【问题描述】:如果我有像
这样的行键a_c
b_c
j_f
f_d
d_c
我应该得到所有匹配 _c 的行。如何在此处设置开始和停止行键。我试图从开始和停止行键中获取扫描结果,而不是使用 rowfilter 或其他过滤器类型。
【问题讨论】:
【参考方案1】:如果您不想使用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 来过滤结果。如果您找到其他解决方案,请告诉我:)【参考方案2】:
您可以使用 Hbase STARTROW 和 ENDROW 过滤器。它基本上扫描行键范围之间的数据(ENDROW 除外)。
scan 'table_name', STARTROW=>"<start_row_key>", ENDROW=>"<end_row_key>"
【讨论】:
以上是关于如何设置开始和结束行键 HBASE的主要内容,如果未能解决你的问题,请参考以下文章