一种统计TopK-Frequency信息的方法和系统技术方案

技术编号:24409814 阅读:41 留言:0更新日期:2020-06-06 08:41
本申请公开了一种统计TopK‑Frequency信息的方法和系统。该方法包括:获取一元素及对应的出现次数;判断所述元素是否存在于用于存储元素及出现次数的数据结构中,若存在,则用获取的出现次数更新所述数据结构中已记录的所述元素的出现次数;若不存在,则将获取的所述元素及所述出现次数存储至所述数据结构中;从所述数据结构中选择出现次数最高的k个元素,k为大于等于1的正整数。该方法在频率统计更新速度、TopK‑Frequency信息查询速度、内存使用量、以及统计精确性等四个方面取得平衡。

A method and system for statistics of TOPK frequency information

【技术实现步骤摘要】
一种统计TopK-Frequency信息的方法和系统
本申请涉及互联网
,尤其涉及一种统计TopK-Frequency信息的方法及系统。
技术介绍
基于实时流处理的统计监控引擎最主要的工作是分析客户实时输入的日志流,发现是否有威胁行为,同时还需要对客户的业务指标如每分钟访问量、访问用户数(UV)、访问次数最高的用户、url等信息(TopK-Frequency信息)等进行实时计算,从而实时监控客户业务的变化,并能与识别出的威胁行为之间建立关联。不同客户之间业务特征各有差别,各种业务指标的特征也是各不相同,特别是如UV、TopK-Frequency信息等指标计算所涉及到的内存及性能挑战,成为实时流处理领域重要的问题。当前流式计算对于统计TopK-Frequency信息有两种方案:(1)使用动态扩容的HashMap统计,该方案统计准确,快速,但是消耗内存巨大,无法面对突增的访问量。(2)基于Sketch方法统计,这种方案及其变种以精确度降低的代价换取内存低占用,但是该方案依赖于数据分布的假设,并且统计的TopK-Frequency是有误差的,特别是在面对数据均匀分布时以及长尾数据特征时,误差巨大。此外,现有的流式监控技术在统计TopK-Frequency的除访问次数之外的其他信息时,比如统计TopK-Frequencyurl最频繁的链接来源(most-referer),会采用TopK-Of-TopK形式的嵌套数据结构,这样仍然会造成巨大的内存消耗。因此,需要一种能够在较少内存占用的情况下实时统计出TopK数据的方法和系统。
技术实现思路
为了解决现有技术中统计TopK-Frequency信息时面临的问题,提出了一种统计TopK-Frequency信息的方法和系统。根据本申请的一个方面,提供了一种统计TopK-Frequency信息的方法,所述方法包括:获取一元素及对应的出现次数;判断所述元素是否存在于用于存储元素及出现次数的数据结构中,若存在,则用获取的出现次数更新所述数据结构中已记录的所述元素的出现次数;若不存在,则将获取的所述元素及所述出现次数存储至所述数据结构中;从所述数据结构中选择出现次数最高的k个元素,k为大于等于1的正整数;其中,将获取的所述元素及所述出现次数存储至所述数据结构中包括:判断所述数据结构中已存储的元素个数是否达到可存储元素的最大容量,若未达到,则将获取的所述元素及所述出现次数存储至所述数据结构中;若已达到,则确定所述数据结构中最低出现次数及对应的元素,从所述数据结构中删除所述最低出现次数及对应的元素后,将获取的所述元素及所述出现次数存储至所述数据结构中。其中,所述数据结构包括n个数据集合,出现次数相同的元素被存储至相同的数据集合中,并且所述n个数据集合按照出现次数的顺序进行排序,其中n是大于等于1的正整数。其中,若获取的所述元素存在于所述数据结构中则用获取的出现次数更新所述数据结构中已记录的出现次数包括:在存储的元素出现次数比所述数据结构已存储的所述元素出现次数大的数据集合中,判断是否存在存储的出现次数相同于获取的所述出现次数的数据集合,若存在,则将所述元素及所述出现次数存储至存储的出现次数相同于获取的所述出现次数的数据集合的尾部,并将所述元素从当前数据集合中删除;若不存在,则在所述数据结构中创建新的数据集合,将所述元素及所述出现次数存储至该新数据集合中,并将所述元素从当前数据集合中删除,更新所述数据结构中所有数据集合的顺序,以使得所有数据集合按照其中存储的元素的出现次数顺序排序。其中,若获取的所述元素不存在于所述数据结构中,将获取的所述元素及所述出现次数存储至所述数据结构中还包括:在所述数据结构的所述数据集合中,判断是否存在存储的出现次数相同于获取的所述出现次数的数据集合,若存在,则将所述元素及所述出现次数存储至存储的出现次数相同于获取的所述出现次数的数据集合的尾部;若不存在,则在所述数据结构中创建新的数据集合,将所述元素及所述出现次数存储至该新数据集合中,并更新所述数据结构中所有数据集合的顺序,以使得所有数据集合按照其中存储的元素的出现次数顺序排序。其中,确定所述数据结构中最低出现次数及对应的元素包括:将位于所述数据结构中存储最低出现次数的数据集合的尾部的元素确定为最低出现次数对应的元素。其中,从所述数据结构中选择出现次数最高的k个元素包括:按照所述n个数据集合存储元素的出现次数由大到小的顺序,从所述n个数据集合中选择前k个元素。根据本申请的另一方面,还提供了一种统计TopK-Frequency信息的系统,所述系统包括:获取模块,用于获取一元素及对应的出现次数;更新和存储模块,用于判断所述元素是否存在于用于存储元素及出现次数的数据结构中,若存在,则用获取的出现次数更新所述数据结构中已记录的所述元素的出现次数;若不存在,则将获取的所述元素及所述出现次数存储至所述数据结构中;选择模块,用于从所述数据结构中选择出现次数最高的k个元素,k为大于等于1的正整数;其中,所述更新和存储模块还用于当所述元素不存在于所述数据结构中时,判断所述数据结构中已存储的元素个数是否达到可存储元素的最大容量,若未达到,则将获取的所述元素及所述出现次数存储至所述数据结构中;若已达到,则确定所述数据结构中最低出现次数及对应的元素,从所述数据结构中删除所述最低出现次数及对应的元素后,将获取的所述元素及所述出现次数存储至所述数据结构中。其中,所述系统还包括所述数据结构,所述数据结构包括n个数据集合,出现次数相同的元素被存储至相同的数据集合中,并且所述n个数据集合按照出现次数的顺序进行排序,其中n是大于等于1的正整数。其中,所述更新和存储模块还用于在获取的所述元素存在于所述数据结构中时,在存储的元素出现次数比所述数据结构已存储的所述元素出现次数大的数据集合中,判断是否存在存储的出现次数相同于获取的所述出现次数的数据集合,若存在,则将所述元素及所述出现次数存储至存储的出现次数相同于获取的所述出现次数的数据集合的尾部,并将所述元素从当前数据集合中删除;若不存在,则在所述数据结构中创建新的数据集合,将所述元素及所述出现次数存储至该新数据集合中,并将所述元素从当前数据集合中删除,更新所述数据结构中所有数据集合的顺序,以使得所有数据集合按照其中存储的元素的出现次数顺序排序。其中,所述更新和存储模块还用于在获取的所述元素不存在于所述数据结构中时,在所述数据结构的所述数据集合中,判断是否存在存储的出现次数相同于获取的所述出现次数的数据集合,若存在,则将所述元素及所述出现次数存储至存储的出现次数相同于获取的所述出现次数的数据集合的尾部;若不存在,则在所述数据结构中创建新的数据集合,将所述元素及所述出现次数存储至该新数据集合中,并更新所述数据结构中所有数据集合的顺序,以使得所有数据集合按照其中存储的元素的出现次数顺序排序。其中,本文档来自技高网
...

【技术保护点】
1.一种统计TopK-Frequency信息的方法,其特征在于,所述方法包括:/n获取一元素及对应的出现次数;/n判断所述元素是否存在于用于存储元素及出现次数的数据结构中,若存在,则用获取的出现次数更新所述数据结构中已记录的所述元素的出现次数;若不存在,则将获取的所述元素及所述出现次数存储至所述数据结构中;/n从所述数据结构中选择出现次数最高的k个元素,k为大于等于1的正整数;/n其中,将获取的所述元素及所述出现次数存储至所述数据结构中包括:/n判断所述数据结构中已存储的元素个数是否达到可存储元素的最大容量,若未达到,则将获取的所述元素及所述出现次数存储至所述数据结构中;若已达到,则确定所述数据结构中最低出现次数及对应的元素,从所述数据结构中删除所述最低出现次数及对应的元素后,将获取的所述元素及所述出现次数存储至所述数据结构中。/n

【技术特征摘要】
1.一种统计TopK-Frequency信息的方法,其特征在于,所述方法包括:
获取一元素及对应的出现次数;
判断所述元素是否存在于用于存储元素及出现次数的数据结构中,若存在,则用获取的出现次数更新所述数据结构中已记录的所述元素的出现次数;若不存在,则将获取的所述元素及所述出现次数存储至所述数据结构中;
从所述数据结构中选择出现次数最高的k个元素,k为大于等于1的正整数;
其中,将获取的所述元素及所述出现次数存储至所述数据结构中包括:
判断所述数据结构中已存储的元素个数是否达到可存储元素的最大容量,若未达到,则将获取的所述元素及所述出现次数存储至所述数据结构中;若已达到,则确定所述数据结构中最低出现次数及对应的元素,从所述数据结构中删除所述最低出现次数及对应的元素后,将获取的所述元素及所述出现次数存储至所述数据结构中。


2.如权利要求1所述的方法,其特征在于,所述数据结构包括n个数据集合,出现次数相同的元素被存储至相同的数据集合中,并且所述n个数据集合按照出现次数的顺序进行排序,其中n是大于等于1的正整数。


3.如权利要求2所述的方法,其特征在于,若获取的所述元素存在于所述数据结构中则用获取的出现次数更新所述数据结构中已记录的出现次数包括:
在存储的元素出现次数比所述数据结构已存储的所述元素出现次数大的数据集合中,判断是否存在存储的出现次数相同于获取的所述出现次数的数据集合,若存在,则将所述元素及所述出现次数存储至存储的出现次数相同于获取的所述出现次数的数据集合的尾部,并将所述元素从当前数据集合中删除;若不存在,则在所述数据结构中创建新的数据集合,将所述元素及所述出现次数存储至该新数据集合中,并将所述元素从当前数据集合中删除,更新所述数据结构中所有数据集合的顺序,以使得所有数据集合按照其中存储的元素的出现次数顺序排序。


4.如权利要求2所述的方法,其特征在于,若获取的所述元素不存在于所述数据结构中,将获取的所述元素及所述出现次数存储至所述数据结构中还包括:
在所述数据结构的所述数据集合中,判断是否存在存储的出现次数相同于获取的所述出现次数的数据集合,若存在,则将所述元素及所述出现次数存储至存储的出现次数相同于获取的所述出现次数的数据集合的尾部;若不存在,则在所述数据结构中创建新的数据集合,将所述元素及所述出现次数存储至该新数据集合中,并更新所述数据结构中所有数据集合的顺序,以使得所有数据集合按照其中存储的元素的出现次数顺序排序。


5.如权利要求2所述的方法,其特征在于,确定所述数据结构中最低出现次数及对应的元素包括:
将位于所述数据结构中存储最低出现次数的数据集合的尾部的元素确定为最低出现次数对应的元素。


6.如权利要求2所述的方法,其特征在于,从所述数据结构中选择出现次数最高的k个元素包括:
按照所述n个数据集合存储元素的出现次数由大到小的顺序,从所述n个数据集合中选择前k个元素。


...

【专利技术属性】
技术研发人员:刘一雄汪海丛磊
申请(专利权)人:北京数安鑫云信息技术有限公司
类型:发明
国别省市:北京;11

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

1