如何根据 HBase shell 中的行模式扫描行?
How can I scan for rows based on a row pattern in HBase shell?
我想使用匹配某种模式的行从 HBase shell 扫描 HTable 中的行。
例如,我有以下table数据:
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 扫描 table,但此方法获取以指定过滤器开头的行。
scan 'test', {FILTER => "(PrefixFilter('s')"}
是否有类似的扫描 table 的方法基于过滤行名称中间模式匹配的行?
hbase(main):003:0> scan 'test', {ENDROW => 't1'}
一般来说,使用 PrefixFilter
可能会很慢,因为它会执行 table 扫描直到到达前缀。
也可以将 RowFilter 与 SubstringComparator 一起使用
如下所示
可以将 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"))}
我想使用匹配某种模式的行从 HBase shell 扫描 HTable 中的行。
例如,我有以下table数据:
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 扫描 table,但此方法获取以指定过滤器开头的行。
scan 'test', {FILTER => "(PrefixFilter('s')"}
是否有类似的扫描 table 的方法基于过滤行名称中间模式匹配的行?
hbase(main):003:0> scan 'test', {ENDROW => 't1'}
一般来说,使用 PrefixFilter
可能会很慢,因为它会执行 table 扫描直到到达前缀。
也可以将 RowFilter 与 SubstringComparator 一起使用 如下所示
可以将 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"))}