CN105550236A - 一种分布式数据去重处理方法及装置 - Google Patents

一种分布式数据去重处理方法及装置 Download PDF

Info

Publication number
CN105550236A
CN105550236A CN201510893456.XA CN201510893456A CN105550236A CN 105550236 A CN105550236 A CN 105550236A CN 201510893456 A CN201510893456 A CN 201510893456A CN 105550236 A CN105550236 A CN 105550236A
Authority
CN
China
Prior art keywords
duplicate removal
data
row
value
burst
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510893456.XA
Other languages
English (en)
Other versions
CN105550236B (zh
Inventor
柯钦武
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Huaduo Network Technology Co Ltd
Original Assignee
Guangzhou Huaduo Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangzhou Huaduo Network Technology Co Ltd filed Critical Guangzhou Huaduo Network Technology Co Ltd
Priority to CN201510893456.XA priority Critical patent/CN105550236B/zh
Publication of CN105550236A publication Critical patent/CN105550236A/zh
Application granted granted Critical
Publication of CN105550236B publication Critical patent/CN105550236B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种分布式数据去重处理方法及装置,解决了目前的精确去重但是非即席查询,所导致的在数据量较大时往往需要较长的计算时间才能得出结果的技术问题,以及非精确去重的即席查询,导致的计算出来的结果不是精确值的技术问题。本发明实施例分布式数据去重处理方法包括:将具有相同去重字段值的数据对应存储在预置分片中;将存储在预置分片中的所有数据进行列存储到Lucene中;根据Lucene提取每个预置分片中的去重列,并进行每一列的倒排索引;根据每个预置分片的倒排索引获取去重列对应的去重值;将获取到的所有去重值进行累加获取到最终去重值。

Description

一种分布式数据去重处理方法及装置
技术领域
本发明涉及数据处理技术领域,尤其涉及一种分布式数据去重处理方法及装置。
背景技术
随着业务发展,我们的用户行为数据出现了爆发式增长,目前每天的用户行为事件数据已超过10亿,部分产品的累计用户/机器数已超5亿。为了实时分析截止当前时刻有多少新增用户(机器),当天有多少用户(机器)活跃,充值或其他的行为事件发送的人数机器数。使用传统的方法将数据储存后计算已经不能满足数据量的飞速增长,即使使用分布式的列式数据库,导入的延时、计算的复杂度、数据储存的成本都非常高。
业界现有去重方案主要有两类,一类是精确去重但是非即席查询,而且在数据量较大时往往需要较长的计算时间才能得出结果;第二类是非精确去重的即席查询,查询速度比较快,消耗的资源也相对较少,但是计算出来的结果不是精确值。
发明内容
本发明实施例提供的一种分布式数据去重处理方法及装置,解决了目前的精确去重但是非即席查询,所导致的在数据量较大时往往需要较长的计算时间才能得出结果的技术问题,以及非精确去重的即席查询,导致的计算出来的结果不是精确值的技术问题。
本发明实施例提供的一种分布式数据去重处理方法,包括:
将具有相同去重字段值的数据对应存储在预置分片中;
将存储在所述预置分片中的所有所述数据进行列存储到Lucene中;
根据所述Lucene提取每个所述预置分片中的去重列,并进行每一列的倒排索引;
根据每个所述预置分片的所述倒排索引获取所述去重列对应的去重值;
将获取到的所有所述去重值进行累加获取到最终去重值。
可选地,将具有相同去重字段值的数据对应存储在预置分片中具体包括:
在分布式数据存储过程中,确定分布式数据中的待去重字段;
根据所述待去重字段对应的所述去重字段值进行分片路由,将具有相同去重字段值的所述数据对应存储在预置分片中。
可选地,根据所述Lucene提取每个所述预置分片中的去重列,并进行每一列的倒排索引具体包括:
根据所述Lucene提取每个所述预置分片中的去重列;
根据所述去重列对每一列所述数据建立对应的倒排索引。
可选地,根据每个所述预置分片的所述倒排索引获取所述去重列对应的去重值具体包括:
对每个所述预置分片结合预置分段位进行去重判断,获取到每一所述去重列中每一个所述数据对应的去重值。
可选地,对每个所述预置分片结合预置分段位进行去重判断,获取到每一所述去重列中每一个所述数据对应的去重值具体包括:
对每个所述预置分片中的所述去重列位进行复数个段的分段处理形成与每个所述去重列对应的所述预置分段位
对每个所述预置分段位进行去重判断,获取到每一所述去重列中每一个所述数据对应的去重值。
可选地,对每个所述预置分片中的所述去重列位进行复数个段的分段处理形成与每个所述去重列对应的所述预置分段位具体包括:
对所述预置分段位图中的一个段进行优先队列的创建;
将所述数据依次插入进所述优先队列,直到所述优先队列插满;
将插满所述数据的所述优先队列中的数据转移至所述预置分段位图中形成与所述优先队列的长度一致的新的所述预置分段位
可选地,所述优先队列的容量为(所述优先队列的长度*k)/32,所述k为大于0,且小于1。
本发明实施例提供的一种分布式数据去重处理装置,包括:
第一存储单元,用于将具有相同去重字段值的数据对应存储在预置分片中;
第二存储单元,用于将存储在所述预置分片中的所有所述数据进行列存储到Lucene中;
索引单元,用于根据所述Lucene提取每个所述预置分片中的去重列,并进行每一列的倒排索引;
第一去重值获取单元,用于根据每个所述预置分片的所述倒排索引获取所述去重列对应的去重值;
最终去重值获取单元,用于将获取到的所有所述去重值进行累加获取到最终去重值。
可选地,第一存储单元具体包括:
确定子单元,用于在分布式数据存储过程中,确定分布式数据中的待去重字段;
第一存储子单元,用于根据所述待去重字段对应的所述去重字段值进行分片路由,将具有相同去重字段值的所述数据对应存储在预置分片中。
可选地,索引单元具体包括:
提取子单元,用于根据所述Lucene提取每个所述预置分片中的去重列;
索引子单元,用于根据所述去重列对每一列所述数据建立对应的倒排索引。
可选地,第一去重值获取单元,具体用于对每个所述预置分片结合预置分段位进行去重判断,获取到每一所述去重列中每一个所述数据对应的去重值;
所述第一去重值获取单元具体包括:
分段处理子单元,用于对每个所述预置分片中的所述去重列位进行复数个段的分段处理形成与每个所述去重列对应的所述预置分段位
第一去重值获取子单元,用于对每个所述预置分段位进行去重判断,获取到每一所述去重列中每一个所述数据对应的去重值。
可选地,分段处理子单元具体包括:
创建模块,用于对所述预置分段位图中的一个段进行优先队列的创建;
数据插入模块,用于将所述数据依次插入进所述优先队列,直到所述优先队列插满;
数据转移模块,用于将插满所述数据的所述优先队列中的数据转移至所述预置分段位图中形成与所述优先队列的长度一致的新的所述预置分段位
其中,所述优先队列的容量为(所述优先队列的长度*k)/32,所述k为大于0,且小于1。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例提供的一种分布式数据去重处理方法及装置,其中,分布式数据去重处理方法包括:将具有相同去重字段值的数据对应存储在预置分片中;将存储在预置分片中的所有数据进行列存储到Lucene中;根据Lucene提取每个预置分片中的去重列,并进行每一列的倒排索引;根据每个预置分片的倒排索引获取去重列对应的去重值;将获取到的所有去重值进行累加获取到最终去重值。本实施例中,通过将具有相同去重字段值的数据对应存储在预置分片中,然后将存储在预置分片中的所有数据进行列存储到Lucene中,再根据Lucene提取每个预置分片中的去重列,并进行每一列的倒排索引,根据每个预置分片的倒排索引获取去重列对应的去重值,最后将获取到的所有去重值进行累加获取到最终去重值,便实现了对分布式数据高效且精确的去重处理,解决了目前的精确去重但是非即席查询,所导致的在数据量较大时往往需要较长的计算时间才能得出结果的技术问题,以及非精确去重的即席查询,导致的计算出来的结果不是精确值的技术问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图
图1为本发明实施例提供的一种分布式数据去重处理方法的一个实施例的流程示意
图2为本发明实施例提供的一种分布式数据去重处理方法的另一个实施例的流程示意
图3为本发明实施例提供的一种分布式数据去重处理方法的另一个实施例的流程示意
图4为本发明实施例提供的预置分段位的一个实施例的流程示意
图5为本发明实施例提供的一种分布式数据去重处理装置的一个实施例的结构示意
图6为本发明实施例提供的一种分布式数据去重处理装置的另一个实施例的结构示意
图7为本发明实施例提供的一种分布式数据去重处理装置的另一个实施例的结构示意
图8为去重的字段的值对数据做分片路由及倒排索引的应用例的示意
图9图4实施例的应用例的示意
具体实施方式
本发明实施例提供的一种分布式数据去重处理方法及装置,解决了目前的精确去重但是非即席查询,所导致的在数据量较大时往往需要较长的计算时间才能得出结果的技术问题,以及非精确去重的即席查询,导致的计算出来的结果不是精确值的技术问题。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
列存储:数据的存储是按照单列而不是多行进行连续存储。
倒排索引:倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(invertedindex)。
数据路由:指将数据通过一个特定的算法来决定数据存储位置的过程。
优先队列:普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出(largest-in,first-out)的行为特征。
Lucene:Lucene是一个用于全文检索和搜索的开源项目,由Apache软件基金会支持和提供。
在分布式存储的数据中进行精确去重计算时,主要存在以下两个地方对查询性能影响较大:一个是节点间数据的交换。这个将会是决定精确去重查询性能的关键。因为需要要去重,且要求多个节点同时计算的前提下,每个计算节点所处理的数据的去重值必须不能同时出现在其他节点,即要保证具有相同去重字段值的数据被分配到同一个节点计算,只有这样才能保证所有节点同时计算时的正确性。可以想象若每次计算过程中将大量的数据跨节点传输,由于受到网络I/O的限制,这一过程会耗费大量的时间。
另一个则是数据加载。在传统的关系型数据库中,数据都是按行存储的,这种存储方式在去重查询时带来的后果就是,查询时需要将其它大量无关的列的数据都加载到内存,不仅浪费了内存,也增加了数据加载的时间。
请参阅图1,本发明实施例提供的一种分布式数据去重处理方法的一个实施例包括:
101、将具有相同去重字段值的数据对应存储在预置分片中;
本实施例中,当需要针对前述的在分布式存储的数据中进行精确去重计算时,需要将具有相同去重字段值的数据对应存储在预置分片中。
102、将存储在预置分片中的所有数据进行列存储到Lucene中;
当将具有相同去重字段值的数据对应存储在预置分片中之后,需要将存储在预置分片中的所有数据进行列存储到Lucene中。
103、根据Lucene提取每个预置分片中的去重列,并进行每一列的倒排索引;
当将存储在预置分片中的所有数据进行列存储到Lucene中之后,需要根据Lucene提取每个预置分片中的去重列,并进行每一列的倒排索引。
104、根据每个预置分片的倒排索引获取去重列对应的去重值;
当根据Lucene提取每个预置分片中的去重列,并进行每一列的倒排索引之后,需要根据每个预置分片的倒排索引获取去重列对应的去重值。
105、将获取到的所有去重值进行累加获取到最终去重值。
当根据每个预置分片的倒排索引获取去重列对应的去重值之后,需要将获取到的所有去重值进行累加获取到最终去重值。
本实施例中,通过将具有相同去重字段值的数据对应存储在预置分片中,然后将存储在预置分片中的所有数据进行列存储到Lucene中,再根据Lucene提取每个预置分片中的去重列,并进行每一列的倒排索引,根据每个预置分片的倒排索引获取去重列对应的去重值,最后将获取到的所有去重值进行累加获取到最终去重值,便实现了对分布式数据高效且精确的去重处理,解决了目前的精确去重但是非即席查询,所导致的在数据量较大时往往需要较长的计算时间才能得出结果的技术问题,以及非精确去重的即席查询,导致的计算出来的结果不是精确值的技术问题。
上面是对分布式数据去重处理方法的过程进行详细的描述,下面将对分片和获取去重值的具体过程进行详细的描述,请参阅图2,本发明实施例提供的一种分布式数据去重处理方法的另一个实施例包括:
201、在分布式数据存储过程中,确定分布式数据中的待去重字段;
本实施例中,当需要针对前述的在分布式存储的数据中进行精确去重计算时,需要在分布式数据存储过程中,确定分布式数据中的待去重字段。
202、根据待去重字段对应的去重字段值进行分片路由,将具有相同去重字段值的数据对应存储在预置分片中;
当确定分布式数据中的待去重字段之后,需要根据待去重字段对应的去重字段值进行分片路由,将具有相同去重字段值的数据对应存储在预置分片中。
203、将存储在预置分片中的所有数据进行列存储到Lucene中;
当根据待去重字段对应的去重字段值进行分片路由,将具有相同去重字段值的数据对应存储在预置分片中之后,需要将存储在预置分片中的所有数据进行列存储到Lucene中。
204、根据Lucene提取每个预置分片中的去重列;
当将存储在预置分片中的所有数据进行列存储到Lucene中之后,需要根据Lucene提取每个预置分片中的去重列。
205、根据去重列对每一列数据建立对应的倒排索引;
当根据Lucene提取每个预置分片中的去重列之后,需要根据去重列对每一列数据建立对应的倒排索引。
本实施例中,步骤201至205可以是如图7中的应用例进行详细的描述,应用例一包括:
a.基于Lucene的列存储;
行存储并不利于去重查询,相反的,列存储在查询时可以只关注去重列的数据,只将这一列的数据加载到内存中,并缓存。实时上,Lucene的列存储会为数据的每一列建一个倒排索引,表1对应的倒排索引的结构如表2
表1
表2
需要说明的是,Lucene会为每一列创建一个倒排索引。索引中值的序号对我们后面的查询也是至关重要的。
b.数据存储时对数据有针对性的路由;
数据的跨节点传输,往往会消耗大量的时间,而为了避免计算过程中数据传输,在数据存储的时候,根据需要去重的字段的值对数据做分片路由,即将具有相同去重字段值的数据存在相同的分片中。这样在去重计算时,每个分片只需要针对存在本分片的数据进行计算即可,最后再将所有分片的计算结果进行累加汇总即是最终的去重计算结果,且该结果是精确的,例如图7所示(假设数据的去重字段为userId,分片方式是userId%4)。
206、对每个预置分片结合预置分段位进行去重判断,获取到每一去重列中每一个数据对应的去重值;
当根据去重列对每一列数据建立对应的倒排索引之后,需要对每个预置分片结合预置分段位进行去重判断,获取到每一去重列中每一个数据对应的去重值。
例如当数据按照去重字段值路由存到相应节点的分片之后,各分片做去重查询时只需关心本分片的数据即可。
所以,查询时在分片的步骤如下:
1.将分片内去重列的值使用相应的数值表示;
做去重判断,应该没有比使用位更快的了,然而非数值型的数据无法使用位。所以如果去重字段的类型不是数值型,则需要将其使用相应的数值来表示。
正如上面提到我们使用的是Lucene的列式存储,每个分片内的数据的每一列都会有自己的一个倒排索引,所以要将去重字段值转换成相应的唯一数值型就不难了,只需获取索引中该值所对应的序号即可。
2.使用分段位进行去重判断
得到分片内所有文档去重列的值(或者值所对应的索引中的序号)后,需要做的就是使用位对这些值进行去重判断,这个判断的过程是:假设现在有一个整形序列A,且min(A)=0,max(A)=9,和一个初始的位图Bitset如下:
A=[1,1,2,3,5,9,8,5,5,0];
序号 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0
Bitset:要计算序列A中的值的去重个数,则将序列A中的值依次与Bitset中的序号所对应的值置为1,则Bitset将变成如下所示:
最后Bitset中值为1的位的总个数即为序列A的去重数。
207、将获取到的所有去重值进行累加获取到最终去重值。
当根据每个预置分片的倒排索引获取去重列对应的去重值之后,需要对每个预置分片结合预置分段位进行去重判断,获取到每一去重列中每一个数据对应的去重值。
本实施例中,通过将具有相同去重字段值的数据对应存储在预置分片中,然后将存储在预置分片中的所有数据进行列存储到Lucene中,再根据Lucene提取每个预置分片中的去重列,并进行每一列的倒排索引,根据每个预置分片的倒排索引获取去重列对应的去重值,最后将获取到的所有去重值进行累加获取到最终去重值,便实现了对分布式数据高效且精确的去重处理,解决了目前的精确去重但是非即席查询,所导致的在数据量较大时往往需要较长的计算时间才能得出结果的技术问题,以及非精确去重的即席查询,导致的计算出来的结果不是精确值的技术问题,同时本实施例用于实时计算数据去重,为实时统计海量数据中活跃,新增等去重指标提供高性能的解决方案,可带来为实时去重提供秒级计算的服务支持和服务可按需自动无限扩展的有益效果。
对分片和获取去重值的具体过程进行详细的描述,请参阅图2,本发明实施例提供的一种分布式数据去重处理方法的另一个实施例包括:
301、在分布式数据存储过程中,确定分布式数据中的待去重字段;
本实施例中,当需要针对前述的在分布式存储的数据中进行精确去重计算时,需要在分布式数据存储过程中,确定分布式数据中的待去重字段。
302、根据待去重字段对应的去重字段值进行分片路由,将具有相同去重字段值的数据对应存储在预置分片中;
当确定分布式数据中的待去重字段之后,需要根据待去重字段对应的去重字段值进行分片路由,将具有相同去重字段值的数据对应存储在预置分片中。
303、将存储在预置分片中的所有数据进行列存储到Lucene中;
当根据待去重字段对应的去重字段值进行分片路由,将具有相同去重字段值的数据对应存储在预置分片中之后,需要将存储在预置分片中的所有数据进行列存储到Lucene中。
304、根据Lucene提取每个预置分片中的去重列;
当将存储在预置分片中的所有数据进行列存储到Lucene中之后,需要根据Lucene提取每个预置分片中的去重列。
305、根据去重列对每一列数据建立对应的倒排索引;
当根据Lucene提取每个预置分片中的去重列之后,需要根据去重列对每一列数据建立对应的倒排索引。
本实施例中,步骤301至305可以是如图8中的应用例进行详细的描述,应用例一包括:
a.基于Lucene的列存储;
行存储并不利于去重查询,相反的,列存储在查询时可以只关注去重列的数据,只将这一列的数据加载到内存中,并缓存。实时上,Lucene的列存储会为数据的每一列建一个倒排索引,如前一个实施例提及的表1表2
需要说明的是,Lucene会为每一列创建一个倒排索引。索引中值的序号对我们后面的查询也是至关重要的。
b.数据存储时对数据有针对性的路由;
数据的跨节点传输,往往会消耗大量的时间,而为了避免计算过程中数据传输,在数据存储的时候,根据需要去重的字段的值对数据做分片路由,即将具有相同去重字段值的数据存在相同的分片中。这样在去重计算时,每个分片只需要针对存在本分片的数据进行计算即可,最后再将所有分片的计算结果进行累加汇总即是最终的去重计算结果,且该结果是精确的,例如图7所示(假设数据的去重字段为userId,分片方式是userId%4)。
306、每个预置分片结合预置分段位进行去重判断,获取到每一去重列中每一个数据对应的去重值;
当根据去重列对每一列数据建立对应的倒排索引之后,需要对每个预置分片结合预置分段位进行去重判断,获取到每一去重列中每一个数据对应的去重值。
例如当数据按照去重字段值路由存到相应节点的分片之后,各分片做去重查询时只需关心本分片的数据即可。
所以,查询时在分片的步骤如下:
1.将分片内去重列的值使用相应的数值表示;
做去重判断,应该没有比使用位更快的了,然而非数值型的数据无法使用位。所以如果去重字段的类型不是数值型,则需要将其使用相应的数值来表示。
正如上面提到我们使用的是Lucene的列式存储,每个分片内的数据的每一列都会有自己的一个倒排索引,所以要将去重字段值转换成相应的唯一数值型就不难了,只需获取索引中该值所对应的序号即可。
2.使用分段位进行去重判断
得到分片内所有文档去重列的值(或者值所对应的索引中的序号)后,需要做的就是使用位对这些值进行去重判断,这个判断的过程是:假设现在有一个整形序列A,且min(A)=0,max(A)=9,和一个初始的位图Bitset如下:
A=[1,1,2,3,5,9,8,5,5,0];
序号 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0
表3
Bitset:要计算序列A中的值的去重个数,则将序列A中的值依次与Bitset中的序号所对应的值置为1,则Bitset将变成如下所示:
最后Bitset中值为1的位的总个数即为序列A的去重数。
序号 1 2 3 4 5 6 7 8 9
1 1 1 1 0 1 0 1 1
表4
307、对每个预置分片中的去重列位进行复数个段的分段处理形成与每个去重列对应的预置分段位
需要对每个预置分片中的去重列位进行复数个段的分段处理形成与每个去重列对应的预置分段位
本实施例中,对每个预置分片中的去重列位进行复数个段的分段处理形成与每个去重列对应的预置分段位可以是具体包括步骤如下,如图4所示:
401、对预置分段位图中的一个段进行优先队列的创建,优先队列的容量为(优先队列的长度*k)/32,k为大于0,且小于1;
402、将数据依次插入进优先队列,直到优先队列插满;
403、将插满数据的优先队列中的数据转移至预置分段位图中形成与优先队列的长度一致的新的预置分段位
如图9所示,图4所示的实施例的具体应用例包括:
由于前述的步骤306的位的处理方式很容易会造成内存的极大浪费,如此时序列A=[0,1000000]时,虽然序列A只有两个数据,但是因为最大值是1000000,所以位的大小也不得不开到1000001,所以本方案中对位进行了一定的优化,具体的做法如下:
a.对位进行分段初始化。
表5
如表5所示,位被分成了多段,每段10万位(实际应用时不一定是每段10W,根据需求而定)。当需要访问的位落在某个未初始化的段时,则初始化该段,并分配内存。这样一来,在处理数值较大的序列时就可以节省大量内存了。
b.段内使用优先队列与位的自适应
当位要处理的数据量不多,而且数据均匀分布式,分段初始化仍会造成大量的内存浪费,所以,在刚开始初始化段时,假设段的长度是S,并不是直接创建S位的位数组,而是先创建一个容量为(S*k)/32的优先队列(0<k<1),并将数据先插入到优先队列,当队列插满之后,再初始化S位的位数组,并将队列中的数据转移到位数组中,然后销毁队列。
308、对每个预置分段位进行去重判断,获取到每一去重列中每一个数据对应的去重值;
当对每个预置分片中的去重列位进行复数个段的分段处理形成与每个去重列对应的预置分段位之后,需要对每个预置分段位进行去重判断,获取到每一去重列中每一个数据对应的去重值。
309、将获取到的所有去重值进行累加获取到最终去重值。
当对每个预置分段位进行去重判断,获取到每一去重列中每一个数据对应的去重值之后,需要对每个预置分片结合预置分段位进行去重判断,获取到每一去重列中每一个数据对应的去重值。
本实施例中,通过将具有相同去重字段值的数据对应存储在预置分片中,然后将存储在预置分片中的所有数据进行列存储到Lucene中,再根据Lucene提取每个预置分片中的去重列,并进行每一列的倒排索引,根据每个预置分片的倒排索引获取去重列对应的去重值,最后将获取到的所有去重值进行累加获取到最终去重值,便实现了对分布式数据高效且精确的去重处理,解决了目前的精确去重但是非即席查询,所导致的在数据量较大时往往需要较长的计算时间才能得出结果的技术问题,以及非精确去重的即席查询,导致的计算出来的结果不是精确值的技术问题,同时本实施例用于实时计算数据去重,为实时统计海量数据中活跃,新增等去重指标提供高性能的解决方案,可带来为实时去重提供秒级计算的服务支持和服务可按需自动无限扩展的有益效果,并且优先队列的设计大大地提高了去重处理的效率。
请参阅图5,本发明实施例中提供的一种分布式数据去重处理装置的一个实施例包括:
第一存储单元501,用于将具有相同去重字段值的数据对应存储在预置分片中;
第二存储单元502,用于将存储在预置分片中的所有数据进行列存储到Lucene中;
索引单元503,用于根据Lucene提取每个预置分片中的去重列,并进行每一列的倒排索引;
第一去重值获取单元504,用于根据每个预置分片的倒排索引获取去重列对应的去重值;
最终去重值获取单元505,用于将获取到的所有去重值进行累加获取到最终去重值。
本实施例中,通过第一存储单元501将具有相同去重字段值的数据对应存储在预置分片中,然后第二存储单元502将存储在预置分片中的所有数据进行列存储到Lucene中,索引单元503再根据Lucene提取每个预置分片中的去重列,并进行每一列的倒排索引,第一去重值获取单元504根据每个预置分片的倒排索引获取去重列对应的去重值,最后最终去重值获取单元505将获取到的所有去重值进行累加获取到最终去重值,便实现了对分布式数据高效且精确的去重处理,解决了目前的精确去重但是非即席查询,所导致的在数据量较大时往往需要较长的计算时间才能得出结果的技术问题,以及非精确去重的即席查询,导致的计算出来的结果不是精确值的技术问题
上面是对分布式数据去重处理装置的各单元进行详细的描述,下面将对子单元进行详细的描述,请参阅图6,本发明实施例中提供的一种分布式数据去重处理装置的另一个实施例包括:
第一存储单元601,用于将具有相同去重字段值的数据对应存储在预置分片中;
第一存储单元601具体包括:
确定子单元6011,用于在分布式数据存储过程中,确定分布式数据中的待去重字段;
第一存储子单元6012,用于根据待去重字段对应的去重字段值进行分片路由,将具有相同去重字段值的数据对应存储在预置分片中。
第二存储单元602,用于将存储在预置分片中的所有数据进行列存储到Lucene中;
索引单元603,用于根据Lucene提取每个预置分片中的去重列,并进行每一列的倒排索引;
索引单元603具体包括:
提取子单元6031,用于根据Lucene提取每个预置分片中的去重列;
索引子单元6032,用于根据去重列对每一列数据建立对应的倒排索引。
第一去重值获取单元604,用于根据每个预置分片的倒排索引获取去重列对应的去重值,第一去重值获取单元604,具体用于对每个预置分片结合预置分段位进行去重判断,获取到每一去重列中每一个数据对应的去重值;
第一去重值获取单元604具体包括:
分段处理子单元6041,用于对每个预置分片中的去重列位进行复数个段的分段处理形成与每个去重列对应的预置分段位
第一去重值获取子单元6042,用于对每个预置分段位进行去重判断,获取到每一去重列中每一个数据对应的去重值。
最终去重值获取单元605,用于将获取到的所有去重值进行累加获取到最终去重值。
本实施例中,通过第一存储单元601将具有相同去重字段值的数据对应存储在预置分片中,然后第二存储单元602将存储在预置分片中的所有数据进行列存储到Lucene中,索引单元603再根据Lucene提取每个预置分片中的去重列,并进行每一列的倒排索引,第一去重值获取单元604根据每个预置分片的倒排索引获取去重列对应的去重值,最后最终去重值获取单元605将获取到的所有去重值进行累加获取到最终去重值,便实现了对分布式数据高效且精确的去重处理,解决了目前的精确去重但是非即席查询,所导致的在数据量较大时往往需要较长的计算时间才能得出结果的技术问题,以及非精确去重的即席查询,导致的计算出来的结果不是精确值的技术问题,同时本实施例用于实时计算数据去重,为实时统计海量数据中活跃,新增等去重指标提供高性能的解决方案,可带来为实时去重提供秒级计算的服务支持和服务可按需自动无限扩展的有益效果。
上面是对子单元进行详细的描述,下面将对分段处理子单元的模块进行详细的描述,请参阅图7,本发明实施例中提供的一种分布式数据去重处理装置的另一个实施例包括:
第一存储单元701,用于将具有相同去重字段值的数据对应存储在预置分片中;
第一存储单元701具体包括:
确定子单元7011,用于在分布式数据存储过程中,确定分布式数据中的待去重字段;
第一存储子单元7012,用于根据待去重字段对应的去重字段值进行分片路由,将具有相同去重字段值的数据对应存储在预置分片中。
第二存储单元702,用于将存储在预置分片中的所有数据进行列存储到Lucene中;
索引单元703,用于根据Lucene提取每个预置分片中的去重列,并进行每一列的倒排索引;
索引单元703具体包括:
提取子单元7031,用于根据Lucene提取每个预置分片中的去重列;
索引子单元7032,用于根据去重列对每一列数据建立对应的倒排索引。
第一去重值获取单元704,用于根据每个预置分片的倒排索引获取去重列对应的去重值,第一去重值获取单元704,具体用于对每个预置分片结合预置分段位进行去重判断,获取到每一去重列中每一个数据对应的去重值;
第一去重值获取单元704具体包括:
分段处理子单元7041,用于对每个预置分片中的去重列位进行复数个段的分段处理形成与每个去重列对应的预置分段位
分段处理子单元7041具体包括:
创建模块7041a,用于对预置分段位图中的一个段进行优先队列的创建;
数据插入模块7041b,用于将数据依次插入进优先队列,直到优先队列插满;
数据转移模块7041c,用于将插满数据的优先队列中的数据转移至预置分段位图中形成与优先队列的长度一致的新的预置分段位
其中,优先队列的容量为(优先队列的长度*k)/32,k为大于0,且小于1。
第一去重值获取子单元7042,用于对每个预置分段位进行去重判断,获取到每一去重列中每一个数据对应的去重值。
最终去重值获取单元705,用于将获取到的所有去重值进行累加获取到最终去重值。
本实施例中,通过第一存储单元701将具有相同去重字段值的数据对应存储在预置分片中,然后第二存储单元702将存储在预置分片中的所有数据进行列存储到Lucene中,索引单元703再根据Lucene提取每个预置分片中的去重列,并进行每一列的倒排索引,第一去重值获取单元704根据每个预置分片的倒排索引获取去重列对应的去重值,最后最终去重值获取单元705将获取到的所有去重值进行累加获取到最终去重值,便实现了对分布式数据高效且精确的去重处理,解决了目前的精确去重但是非即席查询,所导致的在数据量较大时往往需要较长的计算时间才能得出结果的技术问题,以及非精确去重的即席查询,导致的计算出来的结果不是精确值的技术问题,同时本实施例用于实时计算数据去重,为实时统计海量数据中活跃,新增等去重指标提供高性能的解决方案,可带来为实时去重提供秒级计算的服务支持和服务可按需自动无限扩展的有益效果,并且分段处理子单元7041的优先队列的设计大大地提高了去重处理的效率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (12)

1.一种分布式数据去重处理方法,其特征在于,包括:
将具有相同去重字段值的数据对应存储在预置分片中;
将存储在所述预置分片中的所有所述数据进行列存储到Lucene中;
根据所述Lucene提取每个所述预置分片中的去重列,并进行每一列的倒排索引;
根据每个所述预置分片的所述倒排索引获取所述去重列对应的去重值;
将获取到的所有所述去重值进行累加获取到最终去重值。
2.根据权利要求1所述的分布式数据去重处理方法,其特征在于,将具有相同去重字段值的数据对应存储在预置分片中具体包括:
在分布式数据存储过程中,确定分布式数据中的待去重字段;
根据所述待去重字段对应的所述去重字段值进行分片路由,将具有相同去重字段值的所述数据对应存储在预置分片中。
3.根据权利要求2所述的分布式数据去重处理方法,其特征在于,根据所述Lucene提取每个所述预置分片中的去重列,并进行每一列的倒排索引具体包括:
根据所述Lucene提取每个所述预置分片中的去重列;
根据所述去重列对每一列所述数据建立对应的倒排索引。
4.根据权利要求3所述的分布式数据去重处理方法,其特征在于,根据每个所述预置分片的所述倒排索引获取所述去重列对应的去重值具体包括:
对每个所述预置分片结合预置分段位图进行去重判断,获取到每一所述去重列中每一个所述数据对应的去重值。
5.根据权利要求4所述的分布式数据去重处理方法,其特征在于,对每个所述预置分片结合预置分段位图进行去重判断,获取到每一所述去重列中每一个所述数据对应的去重值具体包括:
对每个所述预置分片中的所述去重列位图进行复数个段的分段处理形成与每个所述去重列对应的所述预置分段位图;
对每个所述预置分段位图进行去重判断,获取到每一所述去重列中每一个所述数据对应的去重值。
6.根据权利要求5所述的分布式数据去重处理方法,其特征在于,对每个所述预置分片中的所述去重列位图进行复数个段的分段处理形成与每个所述去重列对应的所述预置分段位图具体包括:
对所述预置分段位图中的一个段进行优先队列的创建;
将所述数据依次插入进所述优先队列,直到所述优先队列插满;
将插满所述数据的所述优先队列中的数据转移至所述预置分段位图中形成与所述优先队列的长度一致的新的所述预置分段位图。
7.根据权利要求6所述的分布式数据去重处理方法,其特征在于,所述优先队列的容量为(所述优先队列的长度*k)/32,所述k为大于0,且小于1。
8.一种分布式数据去重处理装置,其特征在于,包括:
第一存储单元,用于将具有相同去重字段值的数据对应存储在预置分片中;
第二存储单元,用于将存储在所述预置分片中的所有所述数据进行列存储到Lucene中;
索引单元,用于根据所述Lucene提取每个所述预置分片中的去重列,并进行每一列的倒排索引;
第一去重值获取单元,用于根据每个所述预置分片的所述倒排索引获取所述去重列对应的去重值;
最终去重值获取单元,用于将获取到的所有所述去重值进行累加获取到最终去重值。
9.根据权利要求8所述的分布式数据去重处理装置,其特征在于,第一存储单元具体包括:
确定子单元,用于在分布式数据存储过程中,确定分布式数据中的待去重字段;
第一存储子单元,用于根据所述待去重字段对应的所述去重字段值进行分片路由,将具有相同去重字段值的所述数据对应存储在预置分片中。
10.根据权利要求9所述的分布式数据去重处理装置,其特征在于,索引单元具体包括:
提取子单元,用于根据所述Lucene提取每个所述预置分片中的去重列;
索引子单元,用于根据所述去重列对每一列所述数据建立对应的倒排索引。
11.根据权利要求10所述的分布式数据去重处理装置,其特征在于,第一去重值获取单元,具体用于对每个所述预置分片结合预置分段位图进行去重判断,获取到每一所述去重列中每一个所述数据对应的去重值;
所述第一去重值获取单元具体包括:
分段处理子单元,用于对每个所述预置分片中的所述去重列位图进行复数个段的分段处理形成与每个所述去重列对应的所述预置分段位图;
第一去重值获取子单元,用于对每个所述预置分段位图进行去重判断,获取到每一所述去重列中每一个所述数据对应的去重值。
12.根据权利要求11所述的分布式数据去重处理装置,其特征在于,分段处理子单元具体包括:
创建模块,用于对所述预置分段位图中的一个段进行优先队列的创建;
数据插入模块,用于将所述数据依次插入进所述优先队列,直到所述优先队列插满;
数据转移模块,用于将插满所述数据的所述优先队列中的数据转移至所述预置分段位图中形成与所述优先队列的长度一致的新的所述预置分段位图;
其中,所述优先队列的容量为(所述优先队列的长度*k)/32,所述k为大于0,且小于1。
CN201510893456.XA 2015-11-27 2015-11-27 一种分布式数据去重处理方法及装置 Active CN105550236B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510893456.XA CN105550236B (zh) 2015-11-27 2015-11-27 一种分布式数据去重处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510893456.XA CN105550236B (zh) 2015-11-27 2015-11-27 一种分布式数据去重处理方法及装置

Publications (2)

Publication Number Publication Date
CN105550236A true CN105550236A (zh) 2016-05-04
CN105550236B CN105550236B (zh) 2019-03-01

Family

ID=55829425

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510893456.XA Active CN105550236B (zh) 2015-11-27 2015-11-27 一种分布式数据去重处理方法及装置

Country Status (1)

Country Link
CN (1) CN105550236B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106227788A (zh) * 2016-07-20 2016-12-14 浪潮软件集团有限公司 一种以Lucene为基础的数据库查询方法
CN106909623A (zh) * 2017-01-19 2017-06-30 中国科学院信息工程研究所 一种支持高效海量数据分析和检索的数据装置及数据存储方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090228433A1 (en) * 2008-03-07 2009-09-10 International Business Machines Corporation System and method for multiple distinct aggregate queries
CN103399944A (zh) * 2013-08-14 2013-11-20 曙光信息产业(北京)有限公司 数据去重查询的实现方法和实现装置
CN103631933A (zh) * 2013-12-06 2014-03-12 中国科学院计算技术研究所 一种面向分布式去重系统的数据路由方法
CN103714096A (zh) * 2012-10-09 2014-04-09 阿里巴巴集团控股有限公司 基于Lucene的倒排索引系统构建、数据处理方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090228433A1 (en) * 2008-03-07 2009-09-10 International Business Machines Corporation System and method for multiple distinct aggregate queries
CN103714096A (zh) * 2012-10-09 2014-04-09 阿里巴巴集团控股有限公司 基于Lucene的倒排索引系统构建、数据处理方法及装置
CN103399944A (zh) * 2013-08-14 2013-11-20 曙光信息产业(北京)有限公司 数据去重查询的实现方法和实现装置
CN103631933A (zh) * 2013-12-06 2014-03-12 中国科学院计算技术研究所 一种面向分布式去重系统的数据路由方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106227788A (zh) * 2016-07-20 2016-12-14 浪潮软件集团有限公司 一种以Lucene为基础的数据库查询方法
CN106909623A (zh) * 2017-01-19 2017-06-30 中国科学院信息工程研究所 一种支持高效海量数据分析和检索的数据装置及数据存储方法
CN106909623B (zh) * 2017-01-19 2019-11-26 中国科学院信息工程研究所 一种支持高效海量数据分析和检索的数据装置及数据存储方法

Also Published As

Publication number Publication date
CN105550236B (zh) 2019-03-01

Similar Documents

Publication Publication Date Title
US10331642B2 (en) Data storage method and apparatus
US11132346B2 (en) Information processing method and apparatus
Olariu Efficient online summarization of microblogging streams
CN107145526B (zh) 一种路网下地理社交关键字反最近邻查询处理方法
CN103714086A (zh) 用于生成非关系数据库的模式的方法和设备
WO2018036549A1 (zh) 分布式数据库查询方法、装置及管理系统
CN105302807A (zh) 一种获取信息类别的方法和装置
CN103995855A (zh) 存储数据的方法和装置
CN102142983A (zh) 告警相关性分析方法和装置
CN106709851A (zh) 大数据检索方法及装置
CN109714249B (zh) 一种小程序消息的推送方法及相关装置
CN104112011A (zh) 一种海量数据提取的方法及装置
CN103186560A (zh) 一种数据排序方法以及相关装置
CN106407226B (zh) 一种数据处理方法、备份服务器及存储系统
CN101916281A (zh) 并行计算系统及去重计数方法
CN104794130A (zh) 一种表间关联查询方法和装置
CN105550236A (zh) 一种分布式数据去重处理方法及装置
CN105426392A (zh) 一种协同过滤推荐方法及系统
CN113190623B (zh) 数据处理方法、装置、服务器和存储介质
CN104462347A (zh) 关键词的分类方法及装置
CN106257449A (zh) 一种信息确定方法和装置
CN106487833A (zh) 网络监测中独立用户数的统计方法及装置
CN107451154B (zh) 一种数据表的处理方法、装置及系统
CN109213972B (zh) 确定文档相似度的方法、装置、设备和计算机存储介质
CN107203550B (zh) 一种数据处理方法和数据库服务器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 511442 floor 28 floor B1 of Wanda Plaza, Panyu District South Village, Guangzhou City, Guangdong

Applicant after: Guangzhou Huaduo Network Technology Co., Ltd.

Address before: 510665, Guangzhou, Whampoa Avenue, No. 2, creative industrial park, building 3-08,

Applicant before: Guangzhou Huaduo Network Technology Co., Ltd.

GR01 Patent grant
GR01 Patent grant