一种对海量日志进行实时UV统计的方法及系统技术方案

技术编号:13178717 阅读:85 留言:0更新日期:2016-05-11 10:11
本发明专利技术公开了一种对海量日志进行实时UV统计的方法及系统,系统包括:布隆过滤器创建与初始化模块,日志实时接收模块,日志处理模块,结果输出模块。本发明专利技术提出的基于布隆过滤器(Bloom Filter)实现的实时UV统计系统,通过选择若干个哈希函数巧妙的把每一条实时的PV Log在常数时间内“映射”到位数组的相应个数的特定的bit位上,再通过简单的判断即可实时计算出当前UV值。该系统具有实现简单、占用系统资源少、运行效率高、实时性等优点。采用了本发明专利技术中的方法,占用更小的内存资源,即更优的空间复杂度;占用更少的处理器资源,即更优的时间复杂度;可以非常方便的进行UV的动态实时计算。

【技术实现步骤摘要】

本专利技术涉及互联网大数据领域,特别涉及一种对海量日志进行实时UV统计的方法及系统
技术介绍
UV是uniquevisitor的简写,是指通过互联网访问、浏览这个网页或APP的自然人,中文又称独立访问用户。UV是一个反映实际使用者的概念,每个独立用户相对于每个ip,更加准确地对应一个实际的浏览者。使用UV作为统计量,可以更加准确的了解单位时间内实际上有多少个访问者来到了相应的页面,是衡量一个网站或APP的用户使用情况的一个重要指标。相对于UV,还有一个重要的概念就是PV。PV是PageView的简写,即页面浏览量,在一定统计周期内用户每次刷新网页一次即被计算一次PV,和UV一样,PV也是衡量一个网站或APP访问情况的一个重要指标。用户每次刷新网页系统会记录一条访问日志,访问日志又称PVLog,通常以文件的形式存在。每条访问日志一般至少要记录谁在什么时间访问了什么页面,根据实际需求,也会有其它的信息被一起记录。从PV和UV这两个概念的定义可知,UV是从对PVLog中在一段时间范围内的相同用户进行去重计算而得,此处的一段时间范围是指UV统计的时间周期,可以为天或小时,对应天级UV或小时级UV。由于,UV的计算可以通过对PVLog(PV日志)中在一段时间范围内的相同用户的去重计算。我们知道,对于大型网站而言,PVLog通常都是海量的,比如国内某知名C2C电商网站搜索页面的日PV达到数十亿级,而且日志都是动态产生并不断生成的。所以UV统计的问题就演变为如何在超大规模数据集中进行有效去重的问题,而实时UV统计则意味着在不断增长的超大数据集中进行实时去重。传统的进行UV计算的方法是基于哈希表(hashtable)的,这种方案存在如下问题:1.对于32bit的hashvalue哈希值,hashtable哈希表的元素达到10万级时,插入元素的碰撞概率将高于50%;而要将10亿级hashtable的碰撞概率降低到1%以下,则hashvalue至少为64bit.而此时hashtable的内存占用达20G以上,当数据集继续增长时,内存开销有可能超过单机的限制。2.10亿级的元素插入,hashtable将resize调整大小数十次,resize的开销呈指数增长,对于某些实时计算的需求,此方案将变得不可用。
技术实现思路
本专利技术要解决的技术问题是,通过基于布隆过滤器,进而能在超大数据集中进行实时去重,实现快速UV统计。基于布隆过滤器(BloomFilter)实现了实时UV统计系统,通过选择若干个哈希函数巧妙的把每一条实时的PVLog在常数时间内“映射”到位数组的相应个数的特定的bit位上,再通过简单的判断即可实时计算出当前UV值。具有实现简单、占用系统资源少、运行效率高、实时性等优点。解决上述技术问题,本专利技术提供了一种对海量日志进行实时UV统计的方法,包括:采集PVLog页面浏览量日志,进行分发后等待处理;同时设置UV计数器;创建BloomFilter布隆过滤器,在当前进程的堆内存中创建BitArray位数组,以及定义k个不同的Hash函数,K为布隆过滤器中Hash函数的个数,每个Hash函数都将元素(PVLog)映射到BitArray中的一个位。将BitArray中所有位都初始化为0;接收等待处理的PVLog,并对其中每条PVLog通过k个不同的Hash函数映射到BitArray的k个bit位;判断上述k个bit位是否全部为1,若不是则所述UV计数器加1,并将这个k个bit位全部置为1;输出UV计数器的值,完成UV统计。更进一步,定义k个不同的Hash函数的方式为:对每个Hash函数按照均匀随机分布的方式将元素hash到不同位置中,k个不同的Hash函数则将元素hash到k个不同的位置。更进一步,创建布隆过滤器的方法包括:在初始状态时,对于长度为m的BitArray中的所有位都被置为0;对于有n个元素的集合D={d1,d2......dn本文档来自技高网
...

【技术保护点】
一种对海量日志进行实时UV统计的方法,其特征在于包括:采集PV Log页面浏览量日志,进行分发后等待处理;同时设置UV计数器;创建Bloom Filter布隆过滤器,在当前进程的堆内存中创建Bit Array位数组,以及定义k个不同的Hash函数;将Bit Array中所有位都初始化为0;接收等待处理的PV Log,并对其中每条PV Log通过k个不同的Hash函数映射到Bit Array的k个bit位;判断上述k个bit位是否全部为1,若不是则所述UV计数器加1,并将这个k个bit位全部置为1;输出UV计数器的值,完成UV统计。

【技术特征摘要】
1.一种对海量日志进行实时UV统计的方法,其特征在于包括:
采集PVLog页面浏览量日志,进行分发后等待处理;同时设置UV计
数器;
创建BloomFilter布隆过滤器,在当前进程的堆内存中创建BitArray位
数组,以及定义k个不同的Hash函数;
将BitArray中所有位都初始化为0;
接收等待处理的PVLog,并对其中每条PVLog通过k个不同的Hash
函数映射到BitArray的k个bit位;
判断上述k个bit位是否全部为1,若不是则所述UV计数器加1,并将
这个k个bit位全部...

【专利技术属性】
技术研发人员:桂洪冠陈运文高翔于敬江永青
申请(专利权)人:达而观信息科技上海有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1