您的位置:首页 > 其它

HBase总结(5)--过滤器介绍

2016-03-07 13:29 267 查看
一、介绍

HBase过滤器是一套为完成一些较高级的需求所提供的API借口。从过滤器的名称我们就可以看出:过滤器就是对数据库获取的数据进行过滤,将符合条件的数据返回客户端,从而减少从region服务器想客户端发送的数据,从而减少数据传输,提高效率。

二、解释

1、过滤器体系

HBase已经提供了很多完成的过滤器,通过这些过滤器我们已经可以实现自己所需要的绝大多数功能,但同时HBase提供了可以进行扩展的借口:interface:Filter 和 抽象类:FilterBase,开发者可以通过实现借口或者继承抽象类去实现自己的过滤器。而在HBase提供的过滤器中,也主要分为几种过滤器:比较过滤器、专用过滤器和扩展过滤器。

2、过滤器组成

过滤器主要有过滤器本身、比较器和比较运算符组成。一般来说,实现一个过滤器都是需要在过滤器中规定比较运算符与比较器,但是也有其他一些过滤器是以别的参数,例如扩展类过滤器。

(1)比较运算符

其实过滤器的作用于SQL语句中的where语句很相似,在Where语句中一般都是使用比较符号的,而在过滤器中不能使用常规的比较操作符,为其特别定义了一套比较运算符。

比较运算符全被封装在一个名为 CompareOp 的枚举类中,因此我们在使用时一般都用通过这个类去引用其中的比较运算符,比较运算符主要有

LESS:匹配小于设定的值

LESS_OR_EQUAL : 小于或者等于预设定的值

EQUAL:等于与设定的值

NOT_EQUAL : 不等于预设定的值

GREATER_OR_EQUAL:大于或者等于预设定的值

GREATER:大于预设定的值。

NO_OP :排除一切值

(2)比较器

比较器是规定如何进行比较的一套类文件,不同的比较器规定了在比较时使用个规则是不相同的,因此会因为使用不同的比较器而使得比较结果出现较大的差异。通常使用的比较器有以下中:

BinaryComparator:

二进制比较器,该比较器会要求用户输入一个byte数据的值,在进行比较的时候会拿获取的值与该比较器中的值进行比较,比较结果是否与比较运算符相同。

BinaryPrefixComparator :

二进制前缀比较值,该类在初始化是要求用户输入一个byte数组。使用compareTo函数对 keyvalue中的value进行比较,只不过只比较前缀。

NullComparaator:

控制比较式,判断当前值是不是为null

BitComaprator:

位比价器,通过BitwiseOp提供的AND(与)、OR(或)、NOT(非)进行比较

RegexStringComparator:

正则表达式比较器。向比较器提供一个正则表达式,比较当前值是否能被指定的正则表达式代表

SubstringComparator:

子字符串表达式,该类初始化时需要制定一个字符串。比较当前值的子字符串中是否与指定的字符创相同。

需要注意的是:后三种比较器(BitComparator、RegexStringComparator、SubstringComparator)只能使用 EQUAL、NOT_EQUAL这两种比较运算符。

3、过滤器运行原理

过滤器只能配置Get和Scan对象进行使用,前面章节也提高了Get和Scan都提供了setFilter()借口,可以通过该函数设置相应的过滤器。在发送Get或者Scan请求以后,其对象会被序列化其被传送到相应的region服务器中,这时过滤器对象也会被序列化后传入到相应的region服务器中。从而在region服务器端起到过滤数据的作用。

如图:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: