伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

关于HyperLogLog去重优化

来源:本站原创 浏览:98次 时间:2023-05-09
在HyperLogLog去重实现中,如果要求误差在0.001以内,那么就需要1048576个int, 也就是会消耗4M的存储空间,但是在实际使用中有很多的维度的统计是达不到这个数据量,那么可以在这里做一个优化,优化方式是:初始HyperLogLog内部使用存储是一个set集合,当set大小达到了指定大小(1048576)就转换为HyperLogLog存储方式。这种方式可以有效减小内存消耗。


实现代码:

public class OptimizationHyperLogLog {    //hyperloglog结构    private HyperLogLog hyperLogLog;    //初始的一个set    private Set<Integer> set;     private double rsd;     //hyperloglog的桶个数,主要内存占用    private int bucket;
   public OptimizationHyperLogLog(double rsd){        this.rsd=rsd;        this.bucket=1 << HyperLogLog.log2m(rsd);        set=new HashSet<>();             }
   //插入一条数据    public void offer(Object object){        final int x = MurmurHash.hash(object);        int currSize=set.size();        if(hyperLogLog==null && currSize+1>bucket){           //升级为hyperloglog           hyperLogLog=new HyperLogLog(rsd);           for(int d: set){               hyperLogLog.offerHashed(d);           }           set.clear();        }
       if(hyperLogLog!=null){            hyperLogLog.offerHashed(x);        }else {            set.add(x);        }    }
   //获取大小    public long cardinality() {      if(hyperLogLog!=null) return hyperLogLog.cardinality();      return set.size();    }}

初始化:入参同样是一个允许的误差范围值rsd,计算出hyperloglog需要桶的个数bucket,也就需要是int数组大小,并且初始化一个set集合hashset;
数据插入:使用与hyperloglog同样的方式将插入数据转hash, 判断当前集合的大小+1是否达到了bucket,不满足则直接添加到set中,满足则将set里面数据转移到hyperloglog对象中并且清空set, 后续数据将会被添加到hyperloglog中;
这种写法没有考虑并发情况,在实际使用情况中也不会存在并发问题。


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net