我想从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'}
非常感谢
3条答案
按热度按时间quhf5bfb1#
仅使用singlecolumnvaluefilter
替换以下字段,
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
avkwfej42#
这个问题很久以前就被问过了,但为了以防万一它能帮助别人。。。
我尝试过将prefixfilter和singlecolumnvaluefilter组合在一起,如下所示,它可以正常工作:
在这里
dbtest是我的名称空间,如果它是您的默认名称空间,那么您可以跳过它
cf是我的专栏家
年龄是一列
这将导致行的前缀为“”,列值为“cf:age”>=10
这个链接应该有助于更好地理解过滤器
yqlxgs2m3#
第一个命令是正确的。你能试一下单独的过滤器,看看它们是否工作正常吗。那就试试和。如果需要,这可以帮助你