如何在hbase shell中组合筛选器?

yfwxisqw  于 2021-06-09  发布在  Hbase
关注(0)|答案(3)|浏览(359)

我想从hbase表中选择一些行,如何设置多重过滤器?看来 AND 不起作用。我试过两种方法。

scan 'hbase_table', { FILTER => "(RowFilter(=, 'regexstring:39$') AND SingleColumnValueFilter ('binary:family','binary:qualifier', '=', 'value')" }

scan 'hbase_table', {LIMIT => 10, FILTER => "(RowFilter.new(CompareFilter::CompareOp.valueOf('EQUAL'), RegexStringComparator.new("39$")) AND SingleColumnValueFilter.new(Bytes.toBytes('family'), Bytes.toBytes('qualifier'), CompareFilter::CompareOp.valueOf('EQUAL'), Bytes.toBytes('value')))", COLUMNS => 'family:qualifier'}

非常感谢

quhf5bfb

quhf5bfb1#

仅使用singlecolumnvaluefilter

scan 'table', {FILTER => "SingleColumnValueFilter
    ('columnfamily', 'columnname', =, 'binary:value', true, false) 
AND SingleColumnValueFilter('columnfamily', 'columnname', =, 'binary:value', true, false)"}

替换以下字段,
table-hbase表名ex:hbasetemp
columnfamily-hbase列族名称ex:s
columnname-hbase列名ex:id
value-hbase字段值ex:12343
singlecolumnvaluefilter的docx:https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/filter/singlecolumnvaluefilter.html

avkwfej4

avkwfej42#

这个问题很久以前就被问过了,但为了以防万一它能帮助别人。。。
我尝试过将prefixfilter和singlecolumnvaluefilter组合在一起,如下所示,它可以正常工作:

scan 'dbtest:table1', {FILTER => "(PrefixFilter ('abc') AND SingleColumnValueFilter('cf','age',>=, 'binary:10',true,false)"}

在这里
dbtest是我的名称空间,如果它是您的默认名称空间,那么您可以跳过它
cf是我的专栏家
年龄是一列
这将导致行的前缀为“”,列值为“cf:age”>=10
这个链接应该有助于更好地理解过滤器

yqlxgs2m

yqlxgs2m3#

第一个命令是正确的。你能试一下单独的过滤器,看看它们是否工作正常吗。那就试试和。如果需要,这可以帮助你

相关问题