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

Nosql 如何在HBase shell中基于行模式扫描行?,nosql,hbase,hbasestorage,Nosql,Hbase,Hbasestorage,我想使用与某些模式匹配的行扫描HBase shell中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 co

我想使用与某些模式匹配的行扫描HBase shell中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
一起使用,如下所示

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"))}

除了我在下面建议的方法之外,您找到了其他方法吗?没有,RowFilter方法很好,所以我不再寻找替代方法。当我在一个大表上使用此方法时,我得到
错误:Call id=14,waitTime=60001,operationTimeout=60000过期。
有没有办法增加等待时间?在hbase-site.xml中,您可以尝试将hbase.rpc.timeout增加到1800000,我建议您阅读此内容。一般来说,您的表中有大量数据,并且您希望使用某种模式搜索行,我建议使用java api的FuzzyRowFilter(参见链接中的示例)它有两个部分:行键的固定部分或已知部分和键的变量部分或未知部分。这将有效地处理大量数据。