Hbase 第三节课 hbase的过滤

目录

Hbase过滤器

过滤器的两类参数

操作符:

常见的六大比较过滤器:

专用过滤器:

布隆过滤器原理:


Hbase过滤器

HBase的基本API,包括增、删、改、查等

查询一般使用Get或者Scan进行查询

Hbase不仅提供了这些简单的查询,而且提供了更加高级的过滤器(Filter)来查询

过滤器的两类参数

过滤器可以根据列簇、列、版本等更多的条件来对数据进行过滤

hbase本身提供三维有序(行键,列,版本有序)

这些过滤器可以高效的完成查询过滤的任务,带有过滤器条件的RPC查询请求会把过滤器分发到各个RegionSever(这是一个服务端过滤器),这样也可以降低网络传输的压力。

使用过滤器至少需要两类参数:

一类是抽象的操作符,另一类是比较器。

操作符:

LESS:小于

LESS_OR_EQUAL:小于等于

EQUAL:等于

NOT_EQUAL:不等于

GREATER_OR_EQUAL:大于等于

GREATER:大于

NO_OP:不比较

常见的六大比较过滤器:

BinaryComparator:

按字节索引顺序比较指定字节数组,采用Bytes.compareTo(byte[])

BinaryPrefixComparator:

同BinaryComparator,只是比较左端前缀的数据是否相同

NullComparator

判断给定的是否为空

BitComparator

按位比较

RegexStringComparator

提供一个正则的比较器,仅支持EQUAL,非EQUAL

SubstringComparator

判断提供的字串是否出现在中

专用过滤器:

单列值过滤器:SingleColumnValueFilter

SingleColumnValueFilter会返回满足条件的cell所在行的所有cell的值(即会返回一行数据)

列值排除过滤器:SingleColumnValueExcludeFilter

与SingleColumnValueFilter相反,会排除掉指定的列,其他的列全部返回

rowkey前缀过滤器:PrefixFilter

分页过滤器PageFilter

布隆过滤器原理:

布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。

Bloom Filter在时间空间这两个因素之外又引入了另一个因素:错误率。

在使用Bloom Filter判断一个元素是否属于某个集合时,会有一定的错误率。也就是说,有可能把不属于这个集合的元素误认为属于这个集合(False Positive),但不会把属于这个集合的元素误认为不属于这个集合(False Negative)。在增加了错误率这个因素之后,Bloom Filter通过允许少量的错误来节省大量的存储空间。

用法理解:

我们已经知道rowKey存放在HFile中,那么为了从一系列的HFile中查询某个rowkey,我们就可以通过 Bloom Filter 快速判断 rowkey 是否在这个HFile中,从而过滤掉大部分的HFile,减少需要扫描的Block。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值