hbase2.1.x shell scan SingleColumnValueFilter

说明

根据 列族、列名 和 值 进行过滤

支持多个条件

相当于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}

原文出处:/show_1IX1w7V9esSh.html