本文介绍了使用 HBase shell 使用过滤器扫描的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有人知道如何根据某些扫描过滤器扫描记录,例如:
Does anybody know how to scan records based on some scan filter i.e.:
column:something = "somevalue"
类似于 this,但来自 HBase shell?
Something like this, but from HBase shell?
推荐答案
试试这个.这有点难看,但对我有用.
Try this. It's kind of ugly, but it works for me.
import org.apache.hadoop.hbase.filter.CompareFilter
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter
import org.apache.hadoop.hbase.filter.SubstringComparator
import org.apache.hadoop.hbase.util.Bytes
scan 't1', { COLUMNS => 'family:qualifier', FILTER =>
SingleColumnValueFilter.new
(Bytes.toBytes('family'),
Bytes.toBytes('qualifier'),
CompareFilter::CompareOp.valueOf('EQUAL'),
SubstringComparator.new('somevalue'))
}
HBase shell 将包含您在 ~/.irbrc 中的任何内容,因此您可以在其中放置类似的内容(我不是 Ruby 专家,欢迎改进):
The HBase shell will include whatever you have in ~/.irbrc, so you can put something like this in there (I'm no Ruby expert, improvements are welcome):
# imports like above
def scan_substr(table,family,qualifier,substr,*cols)
scan table, { COLUMNS => cols, FILTER =>
SingleColumnValueFilter.new
(Bytes.toBytes(family), Bytes.toBytes(qualifier),
CompareFilter::CompareOp.valueOf('EQUAL'),
SubstringComparator.new(substr)) }
end
然后你就可以在 shell 中说:
and then you can just say in the shell:
scan_substr 't1', 'family', 'qualifier', 'somevalue', 'family:qualifier'
这篇关于使用 HBase shell 使用过滤器扫描的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!