Get 和 Scan 操作都可以使用过滤器来设置输出的范围,类似于 SQL 里面的 Where 查询条件。使用 show_filters 命令可以查看当前 HBase 支持的 过滤器类型。
show_filters
使用过滤器的语法格式:
scan '表名',{Filter => ”过滤器(比较运算符,’比较器’)”}
解释:Filter=>指明过滤的方法,整体可用大括号引用,也可以不用大括
号。过滤的方法使用双引号引用,而比较方式用小括号引用。
行键过滤器:
1.RowFilter:针对行键进行过滤
例子:
scan 'student',FILTER=>"RowFilter(>,'binary:002')"
显示行键字节顺序大于002的键值对。
2.PrefixFilter:行键前缀过滤器
scan 'student',FILTER=>"PrefixFilter('001')"
扫描前缀为001的行键
3.FirstKeyOnlyFilter:扫描全表,显示每个逻辑行的第一个键值对
scan 'student',FILTER=>"FirstKeyOnlyFilter()"
4.InclusiveStopFilter:替代ENDROW返回终止条件行;
扫描显示行键001到002范围内的键值对:
scan 'student', {STARTROW =>'001',FILTER =>"InclusiveStopFilter('002')"}
此命令等同:
scan 'student', {STARTROW =>'001',ENDROW => '003'}
列族与列过滤器:
1.FamilyFilter:针对列族进行比较和过滤。
scan 'student',FILTER=>"FamilyFilter(=,'substring:stu’)”
显示列族前缀为stu开头的键值对;
2.QualifierFilter:列标识过滤器。
scan 'student',FILTER=>"QualifierFilter(=,'substring:name')"
显示列名为name的记录;
3.ColumnPrefixFilter:对列名前缀进行过滤。
scan 'student',FILTER=>"ColumnPrefixFilter('name’)”
显示列名为name的记录;
4.MultipleColumnPrefixFilter:可以指定多个前缀
scan 'student',FILTER=>"MultipleColumnPrefixFilter('name','age')"
显示列名为name和age的记录;
5.ColumnRangeFilter :设置范围按字典序对列名进行过滤;
scan 'student',FILTER=>"ColumnRangeFilter('bi',true,'na',true)"
值过滤器:
1.ValueFilter :值过滤器
scan 'student',FILTER=>"ValueFilter(=,'substring:19')
查询值等于19的所有键值对
2.SingleColumnValueFilter :在指定的列族和列中进行值过滤器。
scan 'student', {COLUMN=>'stuinfo:age',FILTER=>"SingleColumnValueFilter('stuinfo','age',=,' binary:19')"}
查询stuinfo列族age列中值等于19的所有键值对
其他过滤器:
1.ColumnCountGetFilter :限制每个逻辑行返回的键值对数
get 'student','001',FILTER=>"ColumnCountGetFilter(3)"
返回行键为001的前3个键值对
2.PageFilter :基于行的分页过滤器,设置返回行数。
scan 'student',FILTER=>"PageFilter(1)"
3.ColumnPaginationFilter :基于列的进行分页过滤器,需要设置偏移量与 返回数量 。
scan 'student',FILTER=>"ColumnPaginationFilter(2,1)"
显示每行第1列之后的2个键值对