微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

hbase的bloomfilter怎么使用

本篇内容主要讲解“hbase的bloomfilter怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“hbase的bloomfilter怎么使用”吧!

简介

判断元素是否存在的情形确实很高效。在hbase中的应用也是如此,可以使用bloomfilter在采用get方式获取数据的时候,过滤掉某些storefile文件,进而提升性能,当然会存在构建bloomfilter导致的性能开销。

从HBase 0.96开始,认情况下启用基于行的布隆过滤器。可以选择禁用它们或更改某些表以使用行+列布隆过滤器,具体取决于数据的特征以及如何将其加载到HBase中。

可以选择为行,或行+列组合来启用Bloom过滤器。如果通常扫描整行,则行+列组合使用bloomfilter是无效的。也即是基于行的布隆过滤器可以对行+列进行Get操作。当每个数据条目的大小至少为几千字节时,Bloom过滤器效果最佳。

当数据存储在几个较大的StoreFiles中时,读取开销将降低,以避免在低级扫描期间额外的磁盘IO找到特定的行。

布隆过滤器需要在删除时重建,因此可能不适合具有大量删除的环境。

常用场景

1、根据key随机读时,在StoreFile级别进行过滤

2、读数据时,会查询到大量不存在的key,也可用于高效判断key是否存在

案例说明

a) ROW

根据keyvalue中的row来过滤storefile 

举例:假设有2个storefile文件sf1和sf2, 

sf1包含kv1(r1 cf:q1 v)、kv2(r2 cf:q1 v) 

sf2包含kv3(r3 cf:q1 v)、kv4(r4 cf:q1 v) 

如果设置了CF属性中的bloomfilter为ROW,那么get(r1)时就会过滤sf2,get(r3)就会过滤sf1 

b) ROWCOL

根据keyvalue中的row+qualifier来过滤storefile

举例:假设有2个storefile文件sf1和sf2, 

sf1包含kv1(r1 cf:q1 v)、kv2(r2 cf:q1 v) 

sf2包含kv3(r1 cf:q2 v)、kv4(r2 cf:q2 v) 

如果设置了CF属性中的bloomfilter为ROW,无论get(r1,q1)还是get(r1,q2),都会读取sf1+sf2;而如果设置了CF属性中的bloomfilter为ROWCOL,那么get(r1,q1)就会过滤sf2,get(r1,q2)就会过滤sf1

启用Bloom过滤器

在列族上启用Bloom过滤器。您可以使用HColumnDescriptor的setBloomFilterType方法或使用HBase API来完成此操作。有效值是NONE,ROW(认值),或ROWCOL。

以下示例创建一个表,并在colfam1列族上启用ROWCOL Bloom过滤器。

hbase> create 'test',{NAME => 'cf1', BLOOMFILTER => 'ROWCOL'}

相关配置

hbase的bloomfilter怎么使用

到此,相信大家对“hbase的bloomfilter怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是编程之家网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐