如何根据hbase shell中的行模式扫描行?

nkkqxpd9  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(452)

我想使用与某些模式匹配的行扫描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')"}

有没有一种类似的扫描表的方法,即在行名中间过滤模式匹配的行?

1tuwyuhd

1tuwyuhd1#

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

相关问题