HBase过滤器简介

不念不忘少年蓝@ 2022-08-05 00:53 357阅读 0赞

HBase过滤器简介

HBase过滤器(filter)提供非常强大的特性帮助用户提高其处理表中数据的效率。

HBase中两种主要的数据读取函数是get()和scan(),他们都支持直接访问数据和通过指定起止行键访问数据的功能。

Get和Scan两个类都支持过滤器,理由是因为这类对象提供的API不能对行健、列名和列值进行过滤,但是通过过滤器可以直接这个目的。

过滤器最基本的接口是Filter,所有的过滤器都在服务器端生效,叫做谓词下推(predicate push down)。这样可以保证所有过滤掉的数据不会被传送到客户端。

下图描述了过滤器怎样在客户端配置,怎样在网络传输中被序列化,怎样在服务器中执行。

Center

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的过滤器提供的比较器

Center 1

后3种比较器只能和EQUAL和NOT_EQUAL运算符搭配使用。

  1. 基于字符串的比较器,如RegexStringComparatorSubstringComparator,比基于字节的比较器更慢,更消耗资源。因为每次比较时它们都需要将给定的值转化为String.
  2. 截取字符串子串和正则式的处理也需要花费额外的时间。
  3. 过滤器本来的目的是为了筛掉无用的信息,所有基于CompareFilter的过滤处理过程是返回匹配的值。

比较器具体实现看这篇文章:http://blog.csdn.net/baolibin528/article/details/46045823

过滤器处理一行数据的逻辑流程:

Center 2

过滤器属性和它们之间的兼容性:

Center 3

Center 4

发表评论

表情:
评论列表 (有 0 条评论,357人围观)

还没有评论,来说两句吧...

相关阅读

    相关 HBase简介

    一、HBase的特点是什么 1.HBase一个分布式的基于列式存储的数据库,基于hadoop的hdfs存储,zookeeper进行管理。 2.HBase适合存储半结构化或非

    相关 HBase 简介

    HBase 简介 HBase - Hadoop Database,是一个高可用、高性能、面向列、可伸缩、实时读写的分布式数据库 利用Hadoop HDFS 作

    相关 HBase简介

    各位小伙伴们,又到了每周分享java&大数据技术的时间,这一次我给大家分享的是hbase技术。那么hbase到底是一个什么样的技术,他又能拿来干嘛用的呢?接下来就让我们一起来学

    相关 Hbase简介

    一、HBaes介绍 1.1、HBase的起源 HBase的原型是Google的BigTable论文,受到了该论文思想的启发,目前作为Hadoop的子项目来开发维护,