在Hbase使用过滤器(行键过滤器列族与列过滤器值过滤器)

Posted 小镭敲代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Hbase使用过滤器(行键过滤器列族与列过滤器值过滤器)相关的知识,希望对你有一定的参考价值。

本文介绍Hbase中的过滤器:

1、行键过滤器

2、列族与列过滤器

3、值过滤器

4、其他过滤器

格式如下:

scan'表名',FILTER=>过滤器(比较运算符,'比较器')"

一、行键过滤器

RowFilter可以配合比较器和运算符,实现行键字符串的比较和过滤

例如,匹配出行键中大于102的数据,可使用binary比较器;匹配以10开头的行键,可使用substring比较器,注意substring不支持大于或小于运算符。

首先创建本次需要用到的表,booksystem:bookinfo  看参考下面这篇文章

(71条消息) Hbase对表进行查询操作详细教程_小镭敲代码的博客-CSDN博客

 1、过滤出行键为102的数据

 scan'booksystem:bookinfo',FILTER=>"RowFilter(=,'binary:102')"

2、过滤出行键=>102的数据

scan'booksystem:bookinfo',FILTER=>"RowFilter(>=,'binary:102')"

 3、过滤出行键是10开头的数据

scan'booksystem:bookinfo',FILTER=>"RowFilter(=,'substring:10')"

4、过滤出行键中包含3的数据

scan'booksystem:bookinfo',FILTER=>"RowFilter(=,'substring:3')"

二、列族与列过滤器

(一)列族过滤器

对列族进行过滤的过滤器为FamilyFilter,其语法结构与RowFilter类似,不同之处在于FamilyFilter是对列族名称进行过滤的

1、过滤出列族为info2的列族数据

 scan'booksystem:bookinfo',FILTER=>"FamilyFilter(=,'binary:info2')"

2、过滤出列族名包含info的数据 

 scan'booksystem:bookinfo',FILTER=>"FamilyFilter(=,'substring:info')"

(二)列过滤器

列过滤器描述
列过滤器描述
QualifiterFilter标识过滤器,只显示对应列名的数据
ColumnPrefixFilter对列名称的前缀进行过滤
MultipleColumnPrefixFilter可以指定多个前缀进行列名称过滤
ColumnRangeFilter过滤列名称的范围

1、过滤出type列 QualifierFilter

 scan'booksystem:bookinfo',FILTER=>"QualifierFilter(=,'binary:type')"

 2、过滤出包含e的列

scan'booksystem:bookinfo',FILTER=>"QualifierFilter(=,'substring:e')"

 3、过滤出列名为n开头的列ColumnPrefixFilter

scan'booksystem:bookinfo',FILTER=>"ColumnPrefixFilter('n')"

4、过滤出列名前缀为n和p的列 MultipleColumnPrefixFilter

scan 'booksystem:bookinfo',FILTER=>"MultipleColumnPrefixFilter('n','p')"

 5、过滤出name-type之间的列 ColumnRangeFilter

 scan 'booksystem:bookinfo',FILTER=>"ColumnRangeFilter('name',true,'typ
e',false)"

三、值过滤器

1、查询之里面包含a的数据

scan 'booksystem:bookinfo',FILTER=>"ValueFilter(=,'substring:a')"

 2、查询在info1的列族中name的值为python的数据SinglecolumnValueFilter

scan 'booksystem:bookinfo',FILTER=>"SingleColumnValueFilter('info1':'name',=,'binary:python')"

3、查询以n开头的列,并且值为python的数据

scan 'booksystem:bookinfo',FILTER=>"ColumnPrefixFilter('n')AND ValueFilter(=,'substring:python')"

四、其他过滤器

1、时间过滤器

过滤出时间在1637769874353,1637769886529的数据

scan 'booksystem:bookinfo',FILTER=>"TimestampsFilter(1637769874353,1637769886529)"

2、分页过滤器

scan'booksystem:bookinfo',STARTROW=>'101',FILTER=>"PageFilter(2)"

以上是关于在Hbase使用过滤器(行键过滤器列族与列过滤器值过滤器)的主要内容,如果未能解决你的问题,请参考以下文章

HBase - Filter - 过滤器的介绍以及使用

Hbase 性能行键与列限定符

使用 Hbase 过滤器搜索有空格但没有空格的行键

如何设置开始和结束行键 HBASE

HBase过滤器(转载)

hbase如何用过滤器实现项目某个求总数量的统计