说明
根据 列族、列名 和 值 进行过滤
支持多个条件
相当于sql中的 select * from 表 where age=20 and sex='male'
过滤器 构造方法
参见:https://hbase.apache.org/2.1/devapidocs/org/apache/hadoop/hbase/filter/SingleColumnValueFilter.html
SingleColumnValueFilter(byte[] family, byte[] qualifier, CompareOperator op, byte[] value)
解释:
family:列族qualifier:列op:比较运算符:=、>、>=、<、<=value:表达式
注意
- 列名大小写一定要正确,写错不报错,但会查询不到数据
例子-单条件
查询 age>20 的记录:
scan 'student',{FILTER => "SingleColumnValueFilter('info','age',>,'binary:20')"}
相当于SQL:select * from student where age > 20
扩展
scan 'student',{FILTER => "SingleColumnValueFilter('info','age',>,'binary:20')",FORMATTER=>'toString',COLUMNS =>['info:name','info:age'],LIMIT => 2}
例子-多条件
查询 age>20 且 sex=male 的记录:
scan 'student',{FILTER => "SingleColumnValueFilter('info','age',>,'binary:20') AND SingleColumnValueFilter('info','sex',=,'binary:male')"}
相当于SQL:select * from student where age > 20 and sex='male'
注意:AND 要大写
注意1
使用 AND 连接多个条件,表示同时满足
注意2
在 hbase shell 中,默认 以字符串进行比较,即:按字典排序,如果 比较数值型,则不正确,如:2 比 100 大
扩展
scan 'student',{FILTER => "SingleColumnValueFilter('info','age',>,'binary:20') AND SingleColumnValueFilter('info','sex',=,'binary:male')",FORMATTER=>'toString',COLUMNS =>['info:name','info:age','info:sex'],LIMIT => 2}