繁体   English   中英

如何在HBase Shell中基于行模式扫描行?

[英]How can I scan for rows based on a row pattern in HBase shell?

我想使用匹配某些模式的行从HBase外壳中扫描HTable中的行。

例如,我有以下表格数据:

    row:r1_t1  column:cf:a, timestamp=1461911995948,value=v1
    row:r2_t2  column:cf:a, timestamp=1461911995949,value=v2
    row:s1_t1  column:cf:a, timestamp=1461911995950,value=q1
    row:s2_t2  column:cf:a, timestamp=1461911995951,value=q2

基于以上数据,我想查找包含't1'的行:

    row:r1_t1  column:cf:a, timestamp=1461911995948,value=v1
    row:s1_t1  column:cf:a, timestamp=1461911995950,value=q1

我知道我可以使用PrefixFilter扫描表,但是此方法采用以指定过滤器开头的行。

    scan 'test', {FILTER => "(PrefixFilter('s')"}

是否有类似的方式可以通过基于行名称中间匹配的模式对行进行过滤来扫描表?

hbase(main):003:0> scan 'test', {ENDROW => 't1'}

通常,使用PrefixFilter可能会很慢,因为它会执行表扫描,直到到达前缀为止。

也可以将RowFilter与SubstringComparator一起使用,如下所示

可以将RowFilterSubstringComparator一起使用,如下所示

hbase(main):003:0> import org.apache.hadoop.hbase.filter.CompareFilter
hbase(main):005:0> import org.apache.hadoop.hbase.filter.SubstringComparator
hbase(main):006:0> scan 'test', {FILTER => org.apache.hadoop.hbase.filter.RowFilter.new(CompareFilter::CompareOp.valueOf('EQUAL'),SubstringComparator.new("searchkeyword"))}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM