Hbase 高级特性Bloom filter
生活随笔
收集整理的这篇文章主要介绍了
Hbase 高级特性Bloom filter
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
Bloom filter 简单而言就是对hash 表的创新,用在 Hbase 中可以有有效减少磁盘IO次数。
图片来源:hbase 权威指南
**使用场景总结:
**
下面是一个java 的简单实现
package basic; /* * @author: wjf * @version: 2016年4月15日 下午10:05:28 */import java.util.BitSet;public class BloomFilter {private static int DEFAULT_SIZE=1<<24;private int[] seeds={3,5,7,11,13,17,31,41};private static BitSet bits=new BitSet(DEFAULT_SIZE);private SimpleHash[] hashs=new SimpleHash[seeds.length];public boolean addValue(String value){if(value==null){return false;}else{for(int i=0;i<seeds.length;i++){hashs[i]=new SimpleHash(DEFAULT_SIZE,seeds[i]);bits.set(hashs[i].hash(value),true);}return true;}}public boolean contains(String value){if(value==null){return false;}else{boolean ret=true;for(SimpleHash h:hashs){ret=ret && bits.get(h.hash(value));if(ret == false){return false;}}return true;}}public static void main(String[] args) {// TODO Auto-generated method stubBloomFilter bfilter=new BloomFilter();bfilter.addValue("just for test");System.out.println(bfilter.contains("just for test"));}} class SimpleHash{private int cap;private int seed;public SimpleHash(int cap,int seed){this.cap=cap;this.seed=seed;}public int hash(String value){int result=0;for(int i=0;i<value.length();i++){result=result*seed+value.charAt(i);}return (cap-1)&result;} }总结
以上是生活随笔为你收集整理的Hbase 高级特性Bloom filter的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: HBase中Bloomfilter类型的
- 下一篇: HBase之BloomFilter