HBase过滤器简介
2015-05-27 15:17
155 查看
HBase过滤器简介
HBase过滤器(filter)提供非常强大的特性帮助用户提高其处理表中数据的效率。
HBase中两种主要的数据读取函数是get()和scan(),他们都支持直接访问数据和通过指定起止行键访问数据的功能。
Get和Scan两个类都支持过滤器,理由是因为这类对象提供的API不能对行健、列名和列值进行过滤,但是通过过滤器可以直接这个目的。
过滤器最基本的接口是Filter,所有的过滤器都在服务器端生效,叫做谓词下推(predicate push down)。这样可以保证所有过滤掉的数据不会被传送到客户端。
下图描述了过滤器怎样在客户端配置,怎样在网络传输中被序列化,怎样在服务器中执行。
1、客户端创建Scan过滤器;
2、发送过滤器数据的序列化Scan;
3、RegionServer使用过滤器对Scan进行序列化。
总结:过滤器在客户端创建,通过RPC传送到服务器端,然后在服务器端进行过滤操作。
1、过滤器层次结构:
在过滤器层次结构中的最底层的是Filter接口和FilterBase抽象类,它们实现了过滤器的空壳和骨架。
其中有一组特殊的过滤器,它们继承自CompareFilter,需要用户同时提供至少两个特定的参数。
2、比较运算符:
继承自CompareFilter的过滤器比基类FilterBase多了一个comoare()方法,需要传入参数定义比较操作的过程。
HBase过滤器的比较操作符:
LESS <
LESS_OR_EQUAL <=
EQUAL =
NOT_EQUAL <>
GREATER_OR_EQUAL >=
GREATER >
NO_OP no operation
当过滤器被应用时,比较运算符可以决定什么被包含,什么被排除。这样可以帮助用户筛选数据的一段子集或一些特定的数据。
3、比较器:
CompareFilter所需要的第二类类型就是比较器,提供多种方法比较不同键值。比较器都继承自WritableByteArrayComparable,WritableByteArrayComparable实现了Writable和Comparable。
HBase对基于CompareFilter的过滤器提供的比较器
后3种比较器只能和EQUAL和NOT_EQUAL运算符搭配使用。
基于字符串的比较器,如RegexStringComparator和SubstringComparator,比基于字节的比较器更慢,更消耗资源。因为每次比较时它们都需要将给定的值转化为String.
截取字符串子串和正则式的处理也需要花费额外的时间。
过滤器本来的目的是为了筛掉无用的信息,所有基于CompareFilter的过滤处理过程是返回匹配的值。
比较器具体实现看这篇文章:/article/1520985.html
过滤器处理一行数据的逻辑流程:
过滤器属性和它们之间的兼容性:
HBase过滤器(filter)提供非常强大的特性帮助用户提高其处理表中数据的效率。
HBase中两种主要的数据读取函数是get()和scan(),他们都支持直接访问数据和通过指定起止行键访问数据的功能。
Get和Scan两个类都支持过滤器,理由是因为这类对象提供的API不能对行健、列名和列值进行过滤,但是通过过滤器可以直接这个目的。
过滤器最基本的接口是Filter,所有的过滤器都在服务器端生效,叫做谓词下推(predicate push down)。这样可以保证所有过滤掉的数据不会被传送到客户端。
下图描述了过滤器怎样在客户端配置,怎样在网络传输中被序列化,怎样在服务器中执行。
1、客户端创建Scan过滤器;
2、发送过滤器数据的序列化Scan;
3、RegionServer使用过滤器对Scan进行序列化。
总结:过滤器在客户端创建,通过RPC传送到服务器端,然后在服务器端进行过滤操作。
1、过滤器层次结构:
在过滤器层次结构中的最底层的是Filter接口和FilterBase抽象类,它们实现了过滤器的空壳和骨架。
其中有一组特殊的过滤器,它们继承自CompareFilter,需要用户同时提供至少两个特定的参数。
2、比较运算符:
继承自CompareFilter的过滤器比基类FilterBase多了一个comoare()方法,需要传入参数定义比较操作的过程。
HBase过滤器的比较操作符:
LESS <
LESS_OR_EQUAL <=
EQUAL =
NOT_EQUAL <>
GREATER_OR_EQUAL >=
GREATER >
NO_OP no operation
当过滤器被应用时,比较运算符可以决定什么被包含,什么被排除。这样可以帮助用户筛选数据的一段子集或一些特定的数据。
3、比较器:
CompareFilter所需要的第二类类型就是比较器,提供多种方法比较不同键值。比较器都继承自WritableByteArrayComparable,WritableByteArrayComparable实现了Writable和Comparable。
HBase对基于CompareFilter的过滤器提供的比较器
后3种比较器只能和EQUAL和NOT_EQUAL运算符搭配使用。
基于字符串的比较器,如RegexStringComparator和SubstringComparator,比基于字节的比较器更慢,更消耗资源。因为每次比较时它们都需要将给定的值转化为String.
截取字符串子串和正则式的处理也需要花费额外的时间。
过滤器本来的目的是为了筛掉无用的信息,所有基于CompareFilter的过滤处理过程是返回匹配的值。
比较器具体实现看这篇文章:/article/1520985.html
过滤器处理一行数据的逻辑流程:
过滤器属性和它们之间的兼容性:
相关文章推荐
- Hbase总结(二)--Hbase查询过滤器简介
- 7.HBase In Action 第一章-HBase简介(1.2.1 典型的网络搜索问题:Bigtable的起原)
- Hbase的过滤器分类
- 心得---输出输入流简介、标准输入输出、过滤器
- hbase 过滤器
- HBase框架简介(整理)
- HBase学习之路 (十一)HBase的协过滤器
- HBase架构简介
- Filter(过滤器)简介和工作原理
- (NoSql之HBase)HBase简介(很好的梳理资料)
- JavaWeb Filter--过滤器 简介
- Filter 过滤器简介
- HBase简介(很好的梳理资料)
- HBase内置过滤器的一些总结
- HBase简介(很好的梳理资料)
- hbase内置过滤器SingleColumnValueFilter条件查询注意点
- HBase(0.96以上版本)过滤器Filter详解及实例代码
- Architecting HBase Applications学习(一)——HBase简介和HBase原理
- HBase之简介
- HBase简介-HBase企业应用实战读书笔记1