一种基于Spark框架实现IDmapping的方法和装置与流程

文档序号:22313768发布日期:2020-09-23 01:35阅读:414来源:国知局
一种基于Spark框架实现ID mapping的方法和装置与流程
本发明涉及大数据
技术领域
,特别是一种基于spark框架实现idmapping的方法和装置、计算机存储介质以及计算设备。
背景技术
:idmapping是大数据领域一项基础且十分关键的技术。简单来说,id-mapping就是把几份不同来源的数据,通过某种技术手段识别为同一个用户或主体。例如某一用户张三,在第一个手机上使用aa手机助手,在第二个手机上使用百度地图,在平板电脑上观看爱奇艺视频,在个人电脑上使用aa浏览器,第一个手机、第二个手机和平板电脑经常共用同一个wifi,第二个手机经常通过数据线与个人电脑相连,那么,如何根据这4个设备上的对象的行为及其之间的联系,确定这4个对象为同一个用户,是idmapping要解决的主要问题。idmapping具有广泛的应用场景和商业价值。一个用户的行为信息、属性数据是分散在很多不同来源的数据上的,分析单个来源的数据看到的只是这个用户的某一部分特征。通过idmapping能把用户的碎片化的部分特征全部串联起来,提供一个完整的用户画像。比如上例中根据张三在平板电脑上观看爱奇艺视频的行为,就可以在手机端向他推荐爱奇艺app及相关影片。再比如程序化交易,它的一个重要环节就是要把当前广告请求的用户和第一方dmp(datamanagementplatform,数据管理平台)里的用户历史兴趣数据进行匹配。如果没有idmapping,程序化交易就会比较盲目,无法实现实时竞价与精准投放。目前,idmapping的主要技术瓶颈在于处理海量用户数据时无法快速、准确地得到映射结果。因为用户id数量巨大,且不同的id之间存在着一定联系,这些id及其联系形成了关系复杂的id网络,如何从复杂的id网络中抽取子网络,然后对子网络进行有效分离或处理,从而得到可靠的子网络,是idmapping工程中要解决的一个主要难题。因此,亟需一种能够高效、可靠地实现idmapping的方法。技术实现要素:鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于spark框架实现idmapping的方法和装置、计算机存储介质以及计算设备。根据本发明实施例的一方面,提供了一种基于spark框架实现idmapping的方法,包括:步骤s1:获取包括多个id对的二维id关系表,对每个id对进行编号,得到初始编号-id对关系表;步骤s2:以id为key,对所述初始编号-id对关系表进行拆分和聚合,得到多个初始编号一次聚合子集,其中,每个初始编号一次聚合子集都由初始编号构成;步骤s3:以初始编号为key,对所述多个初始编号一次聚合子集进行拆分和聚合,得到初始编号聚合子集结果,其中,所述初始编号聚合子集结果中任意两个初始编号聚合子集之间都不存在交集;使用统一标识符对所述初始编号聚合子集结果进行编号,得到统一标识符-初始编号聚合子集关系表;步骤s4:根据所述统一标识符-初始编号聚合子集关系表和所述初始编号-id对关系表,得到统一标识符与id之间的对应关系,实现id的统一表示。可选地,以初始编号为key,对所述多个初始编号一次聚合子集进行拆分和聚合,得到初始编号聚合子集结果,包括:以初始编号为key,以所述多个初始编号一次聚合子集作为初次迭代运算的拆分和聚合的对象,进行拆分和聚合的迭代运算,得到所述初始编号聚合子集结果;其中,在每一次迭代运算中,输出聚合后所得到的与其他初始编号聚合子集无交集的初始编号聚合子集,并将剩余的初始编号聚合子集作为下一次迭代运算的拆分和聚合的对象;直到在一次迭代运算中剩余的初始编号聚合子集之间无法再进行聚合时,输出该剩余的初始编号聚合子集,终止迭代运算,并整合每次迭代运算中输出的初始编号聚合子集得到所述初始编号聚合子集结果。可选地,步骤s2具体包括:将所述初始编号-id对关系表拆分成初始编号-id关系表;以id为key,对所述初始编号-id关系表进行聚合,得到多个初始编号一次聚合子集,其中,每个初始编号一次聚合子集都由初始编号构成;对所述初始编号一次聚合子集进行重新编号,得到二次编号-初始编号一次聚合子集关系表。可选地,在进行聚合得到多个初始编号一次聚合子集后,步骤s2还包括:判断所述多个初始编号一次聚合子集中各子集是否为与其他初始编号一次聚合子集没有交集的孤立子集;若是,则输出该初始编号一次聚合子集作为目标初始编号聚合子集,并对剩余的初始编号一次聚合子集进行重新编号。可选地,判断所述多个初始编号一次聚合子集中各子集是否为与其他初始编号一次聚合子集没有交集的孤立子集,包括:统计每个初始编号一次聚合子集的出现次数和包含的元素数量;将出现次数为2且元素数量为1的初始编号一次聚合子集判断为孤立子集。可选地,步骤s3具体包括:步骤s31:将所述二次编号-初始编号一次聚合子集关系表拆分成二次编号-初始编号-初始编号一次聚合子集关系表;步骤s32:以初始编号为key,对所述二次编号-初始编号-初始编号一次聚合子集关系表进行聚合,得到一个或多个初始编号二次聚合子集;步骤s33:过滤并输出与其他初始编号二次聚合子集不存在交集的初始编号二次聚合子集作为目标初始编号聚合子集;步骤s34:对剩余的初始编号二次聚合子集进行去重,并重新编号,得到三次编号-初始编号二次聚合子集关系表;步骤s35:以此类推,重复步骤s31至s34进行n次迭代运算,直到剩余的初始编号n+2次聚合子集数量为0或1,输出剩余的初始编号n+2次聚合子集作为目标初始编号聚合子集,其中n为自然数;步骤s36:整合前述步骤所输出的目标初始编号聚合子集得到所述初始编号聚合子集结果,使用统一标识符对所述初始编号聚合子集结果进行编号,得到统一标识符-初始编号聚合子集关系表。可选地,步骤s32具体包括:以初始编号为key,对所述二次编号-初始编号-初始编号一次聚合子集关系表进行聚合,得到一个或多个初始编号二次聚合子集和对应的二次编号聚合子集,其中,每个二次编号聚合子集都由二次编号构成,每个初始编号二次聚合子集由与其对应的二次编号聚合子集中的每个二次编号对应的初始编号一次聚合子集合并而成;步骤s33具体包括:判断所述一个或多个二次编号聚合子集中各子集是否为与其他二次编号聚合子集没有交集的孤立子集,若是,则对与该二次编号聚合子集对应的初始编号二次聚合子集进行去重后输出作为目标初始编号聚合子集。可选地,判断所述一个或多个二次编号聚合子集中各子集是否为与其他二次编号聚合子集没有交集的孤立子集,包括:统计每个二次编号聚合子集包含的元素数量;将元素数量为1的二次编号聚合子集判断为孤立子集。可选地,在统计每个二次编号聚合子集包含的元素数量后,步骤s33还包括:判断各二次编号聚合子集包含的元素数量是否大于给定阈值;若是,则对与该二次编号聚合子集对应的初始编号二次聚合子集进行去重后输出作为目标初始编号聚合子集。可选地,步骤s4具体包括:将所述统一标识符-初始编号聚合子集关系表拆分成初始编号-统一标识符关系表;根据所述初始编号-统一标识符关系表和所述初始编号-id对关系表,得到统一标识符-id关系表;以统一标识符为key,对所述统一标识符-id关系表进行聚合,得到id的统一表示表。可选地,根据所述初始编号-统一标识符关系表和所述初始编号-id对关系表,得到统一标识符-id关系表,包括:对所述初始编号-统一标识符关系表和所述初始编号-id对关系表执行leftouterjoin命令,再通过map命令分离出统一标识符和id,得到统一标识符-id关系表。可选地,获取包括多个id对的二维id关系表,包括:将多个二维id关系源数据表整合成所述包括多个id对的二维id关系表。可选地,编号的操作通过zipwithuniqueid命令进行。可选地,聚合的操作通过reducebykey命令进行。根据本发明实施例的另一方面,还提供了一种基于spark框架实现idmapping的装置,包括:数据预处理模块,适于获取包括多个id对的二维id关系表,对每个id对进行编号,得到初始编号-id对关系表;id关系聚合模块,适于以id为key,对所述初始编号-id对关系表进行拆分和聚合,得到多个初始编号一次聚合子集,其中,每个初始编号一次聚合子集都由初始编号构成;编号关系聚合模块,适于以初始编号为key,对所述多个初始编号一次聚合子集进行拆分和聚合,得到初始编号聚合子集结果,其中,所述初始编号聚合子集结果中任意两个初始编号聚合子集之间都不存在交集;使用统一标识符对所述初始编号聚合子集结果进行编号,得到统一标识符-初始编号聚合子集关系表;以及id统一表示模块,适于根据所述统一标识符-初始编号聚合子集关系表和所述初始编号-id对关系表,得到统一标识符与id之间的对应关系,实现id的统一表示。可选地,所述编号关系聚合模块还适于:以初始编号为key,以所述多个初始编号一次聚合子集作为初次迭代运算的拆分和聚合的对象,进行拆分和聚合的迭代运算,得到所述初始编号聚合子集结果;其中,在每一次迭代运算中,输出聚合后所得到的与其他初始编号聚合子集无交集的初始编号聚合子集,并将剩余的初始编号聚合子集作为下一次迭代运算的拆分和聚合的对象;直到在一次迭代运算中剩余的初始编号聚合子集之间无法再进行聚合时,输出该剩余的初始编号聚合子集,终止迭代运算,并整合每次迭代运算中输出的初始编号聚合子集得到所述初始编号聚合子集结果。可选地,所述id关系聚合模块包括:第一拆分单元,适于将所述初始编号-id对关系表拆分成初始编号-id关系表;第一聚合单元,适于以id为key,对所述初始编号-id关系表进行聚合,得到多个初始编号一次聚合子集,其中,每个初始编号一次聚合子集都由初始编号构成;以及第一编号单元,适于对所述初始编号一次聚合子集进行重新编号,得到二次编号-初始编号一次聚合子集关系表。可选地,所述id关系聚合模块还包括:第一过滤输出单元,适于在所述第一聚合单元进行聚合得到多个初始编号一次聚合子集后,判断所述多个初始编号一次聚合子集中各子集是否为与其他初始编号一次聚合子集没有交集的孤立子集;若是,则输出该初始编号一次聚合子集作为目标初始编号聚合子集,并触发所述第一编号单元对剩余的初始编号一次聚合子集进行重新编号。可选地,所述第一过滤输出单元还适于:统计每个初始编号一次聚合子集的出现次数和包含的元素数量;将出现次数为2且元素数量为1的初始编号一次聚合子集判断为孤立子集。可选地,所述编号关系聚合模块包括:第二拆分单元,适于将所述二次编号-初始编号一次聚合子集关系表拆分成二次编号-初始编号-初始编号一次聚合子集关系表;第二聚合单元,适于以初始编号为key,对所述二次编号-初始编号-初始编号一次聚合子集关系表进行聚合,得到一个或多个初始编号二次聚合子集;第二过滤输出单元,适于过滤并输出与其他初始编号二次聚合子集不存在交集的初始编号二次聚合子集作为目标初始编号聚合子集;第二编号单元,适于对剩余的初始编号二次聚合子集重新编号,得到三次编号-初始编号二次聚合子集关系表;类推迭代单元,适于触发所述第二拆分单元、所述第二聚合单元、所述第二过滤输出单元和所述第二编号单元以此类推进行n次迭代运算,直到剩余的初始编号n+2次聚合子集数量为0或1,输出剩余的初始编号n+2次聚合子集作为目标初始编号聚合子集,其中n为自然数;以及输出结果整合单元,适于整合前述所输出的目标初始编号聚合子集得到所述初始编号聚合子集结果,使用统一标识符对所述初始编号聚合子集结果进行编号,得到统一标识符-初始编号聚合子集关系表。可选地,所述第二聚合单元还适于:以初始编号为key,对所述二次编号-初始编号-初始编号一次聚合子集关系表进行聚合,得到一个或多个初始编号二次聚合子集和对应的二次编号聚合子集,其中,每个二次编号聚合子集都由二次编号构成,每个初始编号二次聚合子集由与其对应的二次编号聚合子集中的每个二次编号对应的初始编号一次聚合子集合并而成;所述第二过滤输出单元还适于:判断所述一个或多个二次编号聚合子集中各子集是否为与其他二次编号聚合子集没有交集的孤立子集,若是,则对与该二次编号聚合子集对应的初始编号二次聚合子集进行去重后输出作为目标初始编号聚合子集。可选地,所述第二过滤输出单元还适于:统计每个二次编号聚合子集包含的元素数量;将元素数量为1的二次编号聚合子集判断为孤立子集。可选地,所述第二过滤输出单元还适于:在统计每个二次编号聚合子集包含的元素数量后,判断各二次编号聚合子集包含的元素数量是否大于给定阈值;若是,则对与该二次编号聚合子集对应的初始编号二次聚合子集进行去重后输出作为目标初始编号聚合子集。可选地,所述id统一表示模块包括:第三拆分单元,适于将所述统一标识符-初始编号聚合子集关系表拆分成初始编号-统一标识符关系表;关系连接单元,适于根据所述初始编号-统一标识符关系表和所述初始编号-id对关系表,得到统一标识符-id关系表;以及第三聚合单元,适于以统一标识符为key,对所述统一标识符-id关系表进行聚合,得到id的统一表示表。可选地,所述关系连接单元还适于:对所述初始编号-统一标识符关系表和所述初始编号-id对关系表执行leftouterjoin命令,再通过map命令分离出统一标识符和id,得到统一标识符-id关系表。可选地,所述数据预处理模块还适于:将多个二维id关系源数据表整合成所述包括多个id对的二维id关系表。可选地,编号的操作通过zipwithuniqueid命令进行。可选地,聚合的操作通过reducebykey命令进行。根据本发明实施例的再一方面,还提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行根据上文中任一项所述的基于spark框架实现idmapping的方法。根据本发明实施例的又一方面,还提供了一种计算设备,包括:处理器;以及存储有计算机程序代码的存储器;当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行根据上文中任一项所述的基于spark框架实现idmapping的方法。本发明实施例提出的基于spark框架实现idmapping的方法和装置,在对获取的二维id关系表中的每个id对进行编号得到初始编号-id对关系表后,首先以id为key对初始编号-id对关系表进行拆分和id关系聚合,得到多个初始编号一次聚合子集,然后再以初始编号为key,对多个初始编号一次聚合子集进行拆分和编号关系聚合,得到初始编号聚合子集结果,进而以统一标识符对初始编号聚合子集结果进行编号,得到统一标识符-初始编号聚合子集关系表,最后,根据统一标识符-初始编号聚合子集关系表和初始编号-id对关系表得到统一标识符与id之间的对应关系,从而实现了用户id的统一表示。本发明基于spark分布式计算框架实现idmapping算法,利用数学上集合论的思想实现了海量用户数据集合的存储、过滤、拆分与聚合等操作,从而提高了idmapping算法的效率、准确性和可靠性。进一步地,以初始编号为key进行编号关系聚合的过程通过迭代运算实现,通过在每一次迭代运算中,输出聚合后所得到的与其他初始编号聚合子集无交集(即,无需再进行聚合)的初始编号聚合子集,可以使每次迭代运算中剩余的子集(即,待下一次迭代运算中被拆分和聚合的子集)的数量越来越少,从而进一步减少内存开销,提高运算效率。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1示出了根据本发明一实施例的基于spark框架实现idmapping的方法的流程图;图2示出了根据本发明一实施例的基于spark框架实现idmapping的方法的id关系聚合步骤的流程图;图3示出了根据本发明另一实施例的基于spark框架实现idmapping的方法的id关系聚合步骤的流程图;图4示出了根据本发明一实施例的基于spark框架实现idmapping的方法的编号关系聚合步骤的流程图;图5示出了根据本发明另一实施例的基于spark框架实现idmapping的方法的编号关系聚合步骤的流程图;图6示出了根据本发明一实施例的基于spark框架实现idmapping的方法的id统一表示步骤的流程图;图7示出了根据本发明一实施例的基于spark框架实现idmapping的装置的结构示意图;以及图8示出了根据本发明另一实施例的基于spark框架实现idmapping的装置的结构示意图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。目前,idmapping在面对海量用户数据、id种类和数量较多、id间关系复杂的情况时,无法有效地提取id关系网,从而在工程上难以有效实现。spark框架是一个专为大规模数据处理而设计的快速通用的集群计算平台,它启用了内存分布数据集,在处理海量数据时具有很大优势。因此,基于spark框架,利用分布式计算系统实现海量数据集合的存储、过滤、拆分与合并等操作,可望高效实现idmapping过程。为解决上述技术问题,本发明实施例提出一种基于spark框架实现idmapping的方法。图1示出了根据本发明一实施例的基于spark框架实现idmapping的方法的流程图。参见图1,该方法至少可以包括以下步骤s1至步骤s4。步骤s1,数据预处理:获取包括多个id对的二维id关系表,对每个id对进行编号,得到初始编号-id对关系表。步骤s2,id关系聚合:以id为key,对初始编号-id对关系表进行拆分和聚合,得到多个初始编号一次聚合子集,其中,每个初始编号一次聚合子集都由初始编号构成。步骤s3,编号关系聚合:以初始编号为key,对多个初始编号一次聚合子集进行拆分和聚合,得到初始编号聚合子集结果,其中,初始编号聚合子集结果中任意两个初始编号聚合子集之间都不存在交集;使用统一标识符对初始编号聚合子集结果进行编号,得到统一标识符-初始编号聚合子集关系表。步骤s4,id统一表示:根据统一标识符-初始编号聚合子集关系表和初始编号-id对关系表,得到统一标识符与id之间的对应关系,实现id的统一表示。本发明实施例提出的基于spark框架实现idmapping的方法,利用数学上集合论的思想实现了海量用户数据集合的存储、过滤、拆分与聚合等操作,从而提高了idmapping算法的效率、准确性和可靠性。上文步骤s1中,可以通过将从各渠道获取来的多个二维id关系源数据表整合,得到该包括多个id对的二维id关系表。其中,每个二维id关系源数据表中可以包括两两成对出现的多个用户id。在获取到二维id关系表后,为该二维id关系表创建相应的rdd(resilientdistributeddatasets,弹性分布式数据集),作为spark框架的运算对象。优选地,可以利用spark框架的zipwithuniqueid命令对该二维id关系表中的每个id对进行编号,从而为每个id对生成唯一初始编号。上文步骤s2中,以id为key,对初始编号-id对关系表进行拆分和id关系的聚合。在一个可选的实施例中,如图2所示,步骤s2可以包括以下步骤:步骤s21:将初始编号-id对关系表拆分成初始编号-id关系表。具体地,按照将每一个id对与初始编号的对应关系拆分为每个id对中的每个id与该id对的初始编号分别对应的方式,将初始编号-id对关系表拆分成初始编号-id关系表。步骤s22:以id为key,对初始编号-id关系表进行聚合,得到多个初始编号一次聚合子集,其中,每个初始编号一次聚合子集都由初始编号构成。优选地,以id为key,利用spark框架的reducebykey命令对初始编号-id关系表进行聚合。步骤s23:对该多个初始编号一次聚合子集进行重新编号,得到二次编号-初始编号一次聚合子集关系表。优选地,可以利用spark框架的zipwithuniqueid命令对该多个初始编号一次聚合子集进行重新编号。在一个优选的实施例中,如图3所示,在执行完步骤s22以id为key,对初始编号-id关系表进行聚合,得到多个初始编号一次聚合子集之后,步骤s2还可以包括:步骤s24:判断多个初始编号一次聚合子集中各子集是否为与其他初始编号一次聚合子集没有交集的孤立子集;若是,则输出该初始编号一次聚合子集作为目标初始编号聚合子集。此时,步骤s23相应调整为:对剩余的初始编号一次聚合子集进行重新编号,以得到二次编号-初始编号一次聚合子集关系表。进一步地,上文步骤s24中判断多个初始编号一次聚合子集中各子集是否为与其他初始编号一次聚合子集没有交集的孤立子集的操作可以通过以下方式实施:统计该多个初始编号一次聚合子集中每个子集的出现次数和包含的元素数量;若某个初始编号一次聚合子集的出现次数为2且包含的元素数量为1,则判断该初始编号一次聚合子集为孤立子集。由于孤立子集与其他子集没有交集,无需再进行聚合,因此可直接输出。通过过滤并输出孤立的初始编号一次聚合子集,可减少后续拆分和聚合的运算量,减少内存开销。上文步骤s3中,可以初始编号为key,利用spark框架的reducebykey命令对多个初始编号一次聚合子集进行聚合。优选地,通过迭代运算来实现以初始编号为key,对多个初始编号一次聚合子集进行拆分和编号关系的聚合。此时,步骤s3可以通过以下方式实施:以初始编号为key,以多个初始编号一次聚合子集作为初次迭代运算的拆分和聚合的对象,进行拆分和聚合的迭代运算,得到初始编号聚合子集结果。其中,在每一次迭代运算中,输出聚合后所得到的与其他初始编号聚合子集无交集的初始编号聚合子集,并将剩余的初始编号聚合子集作为下一次迭代运算的拆分和聚合的对象。直到在一次迭代运算中剩余的初始编号聚合子集之间无法再进行聚合时,输出该剩余的初始编号聚合子集,终止迭代运算,并整合每次迭代运算中输出的初始编号聚合子集得到初始编号聚合子集结果。如此,则得到的初始编号聚合子集结果中任意两个初始编号聚合子集之间都不存在交集。通过在每一次迭代运算中,输出聚合后所得到的与其他初始编号聚合子集无交集(即,无需再进行聚合)的初始编号聚合子集,可以使每次迭代运算中剩余的子集(即,待下一次迭代运算中被拆分和聚合的子集)的数量越来越少,从而进一步减少内存开销,提高运算效率。在一个可选的实施例中,如图4所示,步骤s3具体可以包括以下步骤:步骤s31:将步骤s23所得到的二次编号-初始编号一次聚合子集关系表拆分成二次编号-初始编号-初始编号一次聚合子集关系表。具体地,按照将每个初始编号一次聚合子集与二次编号的对应关系拆分为每个初始编号一次聚合子集中的每个初始编号与该初始编号一次聚合子集的二次编号分别对应的方式,将二次编号-初始编号一次聚合子集关系表拆分成二次编号-初始编号-初始编号一次聚合子集关系表。步骤s32:以初始编号为key,对二次编号-初始编号-初始编号一次聚合子集关系表进行聚合,得到一个或多个初始编号二次聚合子集。优选地,可以初始编号为key,利用spark框架的reducebykey命令对二次编号-初始编号-初始编号一次聚合子集关系表进行聚合。步骤s33:过滤并输出与其他初始编号二次聚合子集不存在交集的初始编号二次聚合子集作为目标初始编号聚合子集。步骤s34:对剩余的初始编号二次聚合子集进行去重,并重新编号,得到三次编号-初始编号二次聚合子集关系表。优选地,可以利用spark框架的zipwithuniqueid命令对去重后的剩余的初始编号二次聚合子集进行重新编号。步骤s35:以此类推,重复步骤s31至s34进行n次迭代运算,直到剩余的初始编号n+2次聚合子集数量为0或1,输出剩余的初始编号n+2次聚合子集作为目标初始编号聚合子集,其中n为自然数。步骤s36:整合前述步骤所输出的目标初始编号聚合子集得到初始编号聚合子集结果,使用统一标识符对初始编号聚合子集结果进行编号,得到统一标识符-初始编号聚合子集关系表。在此步骤中,统一标识符不妨用dmid表示,作为所得到的初始编号聚合子集结果的统一编号。在一个优选的实施例中,如图5所示,步骤s32还可以进一步实施为:以初始编号为key,对二次编号-初始编号-初始编号一次聚合子集关系表进行聚合,得到一个或多个初始编号二次聚合子集和对应的二次编号聚合子集,其中,每个二次编号聚合子集都由二次编号构成,每个初始编号二次聚合子集由与其对应的二次编号聚合子集中的每个二次编号对应的初始编号一次聚合子集合并而成。相应地,步骤s33还可以进一步实施为:判断一个或多个二次编号聚合子集中各子集是否为与其他二次编号聚合子集没有交集的孤立子集,若是,则对与该二次编号聚合子集对应的初始编号二次聚合子集进行去重后输出作为目标初始编号聚合子集。进一步地,步骤s33中判断一个或多个二次编号聚合子集中各子集是否为与其他二次编号聚合子集没有交集的孤立子集的操作可以通过以下方式实施:统计每个二次编号聚合子集包含的元素数量;若某个二次编号聚合子集的元素数量为1,则判断该二次编号聚合子集为孤立子集。当某二次编号聚合子集只含有1个元素时,该二次编号聚合子集对应的初始编号二次聚合子集不可再与其他初始编号二次聚合子集进行聚合(或称合并),因此,可将与该二次编号聚合子集对应的初始编号二次聚合子集去重后直接输出。更进一步地,在步骤s33中统计了每个二次编号聚合子集包含的元素数量后,还可以执行以下步骤:判断各二次编号聚合子集包含的元素数量是否大于给定阈值;若是,则对与该二次编号聚合子集对应的初始编号二次聚合子集进行去重后输出作为目标初始编号聚合子集。此步骤中,给定阈值可以根据实际需要设定为20、30、50等。通过引入子集的元素数量的“阈值”,能够限制每个用户拥有id的个数,同时防止运算中数据倾斜,造成某个计算节点id数量过多而内存溢出。上文步骤s4中,根据步骤s3所得的统一标识符-初始编号聚合子集关系表和步骤s1所得的初始编号-id对关系表,得到最终的用户id的映射结果。在一个可选的实施例中,如图6所示,步骤s4具体可以包括以下步骤:步骤s41:将步骤s3所得到的统一标识符-初始编号聚合子集关系表拆分成初始编号-统一标识符关系表。具体地,按照将每个初始编号聚合子集与统一标识符的对应关系拆分为每个初始编号聚合子集中的每个初始编号与该初始编号聚合子集的统一标识符分别对应的方式,将统一标识符-初始编号聚合子集关系表拆分成初始编号-统一标识符关系表。步骤s42:根据初始编号-统一标识符关系表和初始编号-id对关系表,得到统一标识符-id关系表。优选地,通过对初始编号-统一标识符关系表和初始编号-id对关系表执行leftouterjoin命令,再通过map命令分离出统一标识符和id,得到统一标识符-id关系表。步骤s43:以统一标识符为key,对统一标识符-id关系表进行聚合,得到id的统一表示表。优选地,可以统一标识符为key,利用spark框架的reducebykey命令对统一标识符-id关系表进行聚合。以上介绍了图1所示实施例的各个环节的多种实现方式,下面将通过具体实施例来详细介绍本发明的基于spark框架实现idmapping的方法的实现过程。在本具体实施例中,假设源数据中所有id包括:imei(internationalmobileequipmentidentity)、aid(androidid)、sn(serialnumber)、mac(mediaaccesscontrol)、tel(telephone)。这些id都是从各渠道获取来的,它们两两成对出现,构成全部二维id关系源数据表。对于5个id,至多有个源数据表)。简单起见,本实施例中用自然数来表示这些id的值,则假设所有二维id关系源数据表如下:根据本发明具体实施例的基于spark框架实现idmapping的方法包括如下步骤:(1)数据预处理:将多个二维id关系源数据表整合成一个包括多个id对的二维id关系表,为该二维id关系表创建相应的rdd,利用zipwithuniqueid命令对该二维id关系表中的每个id对进行编号,得到初始编号-id对关系表。初始编号-id对关系表共包括三列,其中一列为初始编号,另两列为id,表示初始编号与id之间的关系。具体地,本实施例中对上述表1至表6的源数据表进行预处理,得到如下表7所示的形如(num1,id1,id2)的初始编号-id对关系表,其中,num1列为初始编号,id1列和id2列为每个id关系对中的两个id。表7初始编号-id对关系表num1id1id21imei_1aid_12imei_1sn_13imei_2sn_34imei_3tel_15aid_2sn_36aid_1mac_17sn_2tel_1(2)id关系的聚合:对如表7所示的序列化的初始编号-id对关系表进行拆分,并以id为key,利用reducebykey命令进行聚合。具体地,id关系的聚合步骤包括如下分步骤:(2.1)拆分初始编号-id对关系表:把步骤(1)中所得的初始编号-id对关系表拆分成初始编号-id关系表。实际上,是对表7中每行的两个id进行拆解,把一行数据拆分成两行数据。对表7所示的初始编号-id对关系表进行拆分后,得到如下表8所示的初始编号-id关系表。表8初始编号-id关系表(2.2)以id为key进行聚合:以id为key,利用reducebykey命令对初始编号-id关系表进行聚合,得到多个初始编号一次聚合子集,其中,每个初始编号一次聚合子集都由初始编号构成。本实施例中,以id为key,利用reducebykey命令对表8所示的初始编号-id关系表进行聚合后,得到如下表9所示的id-初始编号一次聚合子集关系表。其中,表9中的num1sets列示出了聚合后得到的多个初始编号一次聚合子集。表9id-初始编号一次聚合子集关系表idnum1setsimei_11,2aid_11,6sn_12imei_23sn_33,5imei_34tel_14,7aid_25mac_16sn_27(2.3)过滤并输出孤立子集:利用spark命令并行判断、筛选并输出步骤(2.2)中得到的多个初始编号一次聚合子集中的孤立子集。判断多个初始编号一次聚合子集中各子集是否为孤立子集的方法为:分布式统计多个初始编号一次聚合子集中每个子集的出现次数和包含的元素数量,若某个初始编号一次聚合子集的元素数量为1且出现2次,则判断该初始编号一次聚合子集为孤立子集。孤立的初始编号一次聚合子集与其他初始编号一次聚合子集没有交集,可直接输出作为目标初始编号聚合子集。能够利用这种方法判断孤立的初始编号一次聚合子集的原因在于:以表8为例,在表8的num1列中每个初始编号出现两次,如果某个初始编号与其他初始编号没有交集,那么在以id为key利用reducebykey进行聚合后,该初始编号就独自构成聚合后的一个初始编号一次聚合子集,并且该初始编号一次聚合子集会出现两次。本实施例中,统计表9的num1sets列中各初始编号一次聚合子集出现的次数,结果发现每个初始编号一次聚合子集都只出现一次,因此,不存在孤立子集,所有初始编号一次聚合子集都可以继续聚合(或称合并)。(2.4)对剩余的初始编号一次聚合子集重新编号:利用zipwithuniqueid命令对剩余的初始编号一次聚合子集重新编号,得到二次编号-初始编号一次聚合子集关系表。本实施例中,由于表9所示的多个初始编号一次聚合子集中不存在孤立子集,剩余的初始编号一次聚合子集即为表9中所有的初始编号一次聚合子集。对表9的num1sets列中的初始编号一次聚合子集重新编号后,得到如下表10所示的二次编号-初始编号一次聚合子集关系表。其中,表10中的num2列表示二次编号。表10二次编号-初始编号一次聚合子集关系表num2num1sets11,221,6324353,56474,78596107(3)编号关系的聚合:对上述表10的聚合结果进行拆分与聚合,这一步通过迭代来实现。在每一个迭代步,先对上一步聚合的结果进行拆分,然后以初始编号为key、利用reducebykey命令进行聚合,输出聚合后的孤立子集,再对剩余子集进行拆分与聚合,如此循环,直到没有剩余子集可输出时迭代终止。整合各步输出结果,对整合的输出结果用统一标识符进行统一编号,得到聚合结果(即,统一标识符-初始编号聚合子集关系表,它实际上表征了统一标识符与初始编号的关系)。具体地,编号关系的聚合步骤包括如下分步骤:(3.1)拆分二次编号-初始编号一次聚合子集关系表:把步骤(2.4)中所得的表10所示的二次编号-初始编号一次聚合子集关系表中的每一行数据拆分成多行数据。具体地,对表10中num1sets这列数据进行拆分,并把它放在新表的第一列(作为key),得到如下表11所示的二次编号-初始编号-初始编号一次聚合子集关系表。其中,表11中num1列表示将表10的num1sets列数据拆分出的初始编号,num2和num1sets列分别表示对应的二次编号和初始编号一次聚合子集。表11二次编号-初始编号-初始编号一次聚合子集关系表num1num2num1sets111,2211,2121,6621,6232343353,5553,5464474,7774,75856967107(3.2)以初始编号为key进行聚合:以初始编号为key,利用reducebykey命令对二次编号-初始编号-初始编号一次聚合子集关系表进行聚合,得到多个初始编号二次聚合子集和对应的二次编号聚合子集,其中,每个二次编号聚合子集都由二次编号构成,每个初始编号二次聚合子集由与其对应的二次编号聚合子集中的每个二次编号对应的初始编号一次聚合子集合并而成。本实施例中,对表11进行聚合后,得到如下表12所示的初始编号-二次编号聚合子集-初始编号二次聚合子集关系表,其中,num2sets和num1sets两列数据分别为聚合后得到的多个二次编号聚合子集和对应的初始编号二次聚合子集。表12初始编号-二次编号聚合子集-初始编号二次聚合子集关系表num1num2setsnum1sets11,21,2,621,31,234,53,546,74,755,83,562,91,677,104,7(3.3)过滤并输出无需继续聚合的集合:利用spark命令并行统计步骤(3.2)中聚合后得到的多个二次编号聚合子集(即表12的num2sets列的子集)中每个子集包含的元素数量,若某个二次编号聚合子集的元素数量为1,则判断该二次编号聚合子集为孤立子集。孤立的二次编号聚合子集与其他二次编号聚合子集没有交集,与该孤立的二次编号聚合子集对应的初始编号二次聚合子集也是孤立子集(即,与其他初始编号二次聚合子集也没有交集),因此,可对与被判断为孤立子集的二次编号聚合子集对应的初始编号二次聚合子集进行去重后输出作为目标初始编号聚合子集。进一步地,在统计了每个二次编号聚合子集包含的元素数量后,还判断各二次编号聚合子集包含的元素数量是否大于给定阈值(比如50),若是,则对与该二次编号聚合子集对应的初始编号二次聚合子集进行去重后输出作为目标初始编号聚合子集。本实施例中,表12的num2sets列中没有孤立子集。(3.4)对剩余集合重新编号:利用spark命令对剩余的初始编号二次聚合子集进行去重,然后利用zipwithuniqueid命令进行重新编号,得到三次编号-初始编号二次聚合子集关系表。本实施例中,由于表12的num2sets列中没有孤立子集,剩余的初始编号二次聚合子集即为num2sets列的所有数据。对表12的num2sets列数据进行去重和重新编号后,得到如下表13所示的三次编号-初始编号二次聚合子集关系表。其中,在表13中,num2列为三次编号数据(为了迭代方便起见,仍然记作num2),num1sets列为初始编号二次聚合子集数据。表13三次编号-初始编号二次聚合子集关系表num2num1sets11,2,621,233,544,751,6需要注意的是,经过步骤(3.1)-(3.4)后,初始编号聚合子集的个数已经从表10中的10个减少到表13中的5个。(3.5)类推迭代:以此类推,重复步骤(3.1)至(3.4)进行n次迭代运算,直到剩余的初始编号n+2次聚合子集数量为0或1为止。本实施例中,具体的迭代运算如下:对表13所示的三次编号-初始编号二次聚合子集关系表重复步骤(3.1),得到如下表14所示的三次编号-初始编号-初始编号二次聚合子集关系表。其中,在表14中,num1、num2和num1sets列分别为初始编号、三次编号、初始编号二次聚合子集数据。表14三次编号-初始编号-初始编号二次聚合子集关系表对表14重复步骤(3.2),得到如下表15所示的初始编号-三次编号聚合子集-初始编号三次聚合子集关系表,其中,num2sets和num1sets两列数据分别为聚合后得到的多个三次编号聚合子集和对应的初始编号三次聚合子集。表15初始编号-三次编号聚合子集-初始编号三次聚合子集关系表num1num2setsnum1sets11,2,51,2,621,21,2,6333,5444,7533,561,51,2,6744,7对表15执行步骤(3.3),注意到表15中num2sets这一列中的三次编号聚合子集{3}、{4}只有1个元素,所以与它们对应的num1sets列中的初始编号三次聚合子集不可再与其他初始编号三次聚合子集进行聚合,把它们筛选出来并输出,这样得到如下表16所示的目标初始编号聚合子集。表16目标初始编号聚合子集num2setsnum1sets33,544,7对表15中剩余的初始编号三次聚合子集执行步骤(3.4),得到如下表17所示的四次编号-初始编号三次聚合子集关系表。其中,在表17中,num2列为四次编号数据(为了迭代方便起见,仍然记作num2),num1sets列为初始编号三次聚合子集数据。表17四次编号-初始编号三次聚合子集关系表num2num1sets11,2,6这样,num1sets列只剩余1个初始编号三次聚合子集{1,2,6},无需再进行聚合,循环结束,并输出该剩余的初始编号三次聚合子集作为目标初始编号聚合子集。(3.6)整合输出结果:整合步骤(2.3)、(3.3)和(3.5)中输出的目标初始编号聚合子集,使用统一标识符(用dmid表示)对其进行统一编号,得到如下表18所示的统一标识符-初始编号聚合子集关系表,其中,dmid列为统一标识符数据,num1sets列为初始编号聚合子集数据。表18统一标识符-初始编号聚合子集关系表dmidnum1sets11,2,623,534,7(4)id的统一表示:根据步骤(3)得到的统一标识符-初始编号聚合子集关系表和步骤(1)得到的初始编号-id对关系表,得到统一标识符与id之间的对应关系,实现用户id的统一表示。具体地,id的统一表示步骤包括如下分步骤:·(4.1)拆分统一标识符-初始编号聚合子集关系表:对表18所示的统一标识符-初始编号聚合子集关系表中的初始编号聚合子集这一列进行拆解,从而把表18中的一行数据拆分成多行数据,把(dmid,初始编号)关系对拆分成(初始编号,dmid)关系对,从而得到如下表19所示的初始编号-统一标识符关系表。其中,表19中的num1列为初始编号数据,dmid列为统一标识符数据。表19初始编号-统一标识符关系表num1dmid11216132524373(4.2)根据步骤(4.1)得到的初始编号-统一标识符关系表和步骤(1)得到的初始编号-id对关系表,得到统一标识符-id关系表。本实施例中,通过对表19所示的初始编号-统一标识符关系表和表7所示的初始编号-id对关系表执行leftouterjoin命令,再通过map命令分布式分离出dmid和id这两个字段,得到如下表20所示的统一标识符-id关系表。表20统一标识符-id关系表dmidid1imei_11aid_11sn_11mac_12imei_22sn_32aid_23imei_33tel_13sn_2(4.3)生成id的统一表示表:对表20所示的统一标识符-id关系表,以dmid为key,通过reducebykey命令进行聚合,得到如下表21所示的id的统一表示表。其中,在表21中,idsets列为id聚合子集数据。表21id的统一表示表dmididsets1imei_1,aid_1,sn_1,mac_12imei_2,sn_3,aid_23imei_3,tel_1,sn_2等价地,表21还可以整理成如下表22的形式:表22id的统一表示表dmidimeiaidsnmactel1111122233321这样,得到了最终的idmapping结果,实现了用户id的统一表示。基于同一发明构思,本发明实施例还提供了一种基于spark框架实现idmapping的装置,用于支持上述任意一个实施例或其组合所提供的基于spark框架实现idmapping的方法。图7示出了根据本发明一实施例的基于spark框架实现idmapping的装置700的结构示意图。参见图7,该装置至少可以包括:数据预处理模块710、id关系聚合模块720、编号关系聚合模块730以及id统一表示模块740。现介绍本发明实施例的基于spark框架实现idmapping的装置的各组成或器件的功能以及各部分间的连接关系:数据预处理模块710,适于获取包括多个id对的二维id关系表,对每个id对进行编号,得到初始编号-id对关系表。id关系聚合模块720,与数据预处理模块710连接,适于以id为key,对初始编号-id对关系表进行拆分和聚合,得到多个初始编号一次聚合子集,其中,每个初始编号一次聚合子集都由初始编号构成。编号关系聚合模块730,与id关系聚合模块720连接,适于以初始编号为key,对多个初始编号一次聚合子集进行拆分和聚合,得到初始编号聚合子集结果,其中,初始编号聚合子集结果中任意两个初始编号聚合子集之间都不存在交集;使用统一标识符对初始编号聚合子集结果进行编号,得到统一标识符-初始编号聚合子集关系表。id统一表示模块740,可分别与编号关系聚合模块730和数据预处理模块710连接,适于根据统一标识符-初始编号聚合子集关系表和初始编号-id对关系表,得到统一标识符与id之间的对应关系,实现id的统一表示。在一个可选的实施例中,编号关系聚合模块730还适于:以初始编号为key,以多个初始编号一次聚合子集作为初次迭代运算的拆分和聚合的对象,进行拆分和聚合的迭代运算,得到初始编号聚合子集结果;其中,在每一次迭代运算中,输出聚合后所得到的与其他初始编号聚合子集无交集的初始编号聚合子集,并将剩余的初始编号聚合子集作为下一次迭代运算的拆分和聚合的对象;直到在一次迭代运算中剩余的初始编号聚合子集之间无法再进行聚合时,输出该剩余的初始编号聚合子集,终止迭代运算,并整合每次迭代运算中输出的初始编号聚合子集得到初始编号聚合子集结果。在一个可选的实施例中,如图8所示,id关系聚合模块720可以包括:第一拆分单元721,适于将初始编号-id对关系表拆分成初始编号-id关系表;第一聚合单元722,与第一拆分单元721连接,适于以id为key,对初始编号-id关系表进行聚合,得到多个初始编号一次聚合子集,其中,每个初始编号一次聚合子集都由初始编号构成;以及第一编号单元723,与第一聚合单元722连接,适于对该多个初始编号一次聚合子集进行重新编号,得到二次编号-初始编号一次聚合子集关系表。优选地,仍然参照图8所示,id关系聚合模块720还可以包括第一过滤输出单元724。第一过滤输出单元724可分别与第一聚合单元722和第一编号单元723连接,适于在第一聚合单元722进行聚合得到多个初始编号一次聚合子集后,判断多个初始编号一次聚合子集中各子集是否为与其他初始编号一次聚合子集没有交集的孤立子集;若是,则输出该初始编号一次聚合子集作为目标初始编号聚合子集,并触发第一编号单元723对剩余的初始编号一次聚合子集进行重新编号。进一步地,第一过滤输出单元724还适于:统计多个初始编号一次聚合子集中每个子集的出现次数和包含的元素数量;若某初始编号一次聚合子集的出现次数为2且元素数量为1,则判断该初始编号一次聚合子集为孤立子集。在一个可选的实施例中,仍旧参照图8所示,编号关系聚合模块730可以包括:第二拆分单元731,适于将二次编号-初始编号一次聚合子集关系表拆分成二次编号-初始编号-初始编号一次聚合子集关系表;第二聚合单元732,与第二拆分单元731连接,适于以初始编号为key,对二次编号-初始编号-初始编号一次聚合子集关系表进行聚合,得到一个或多个初始编号二次聚合子集;第二过滤输出单元733,与第二聚合单元732连接,适于过滤并输出与其他初始编号二次聚合子集不存在交集的初始编号二次聚合子集作为目标初始编号聚合子集;第二编号单元734,与第二过滤输出单元733连接,适于对剩余的初始编号二次聚合子集重新编号,得到三次编号-初始编号二次聚合子集关系表;类推迭代单元735,可分别与第二编号单元734和第二拆分单元731连接,适于触发第二拆分单元731、第二聚合单元732、第二过滤输出单元733和第二编号单元734以此类推进行n次迭代运算,直到剩余的初始编号n+2次聚合子集数量为0或1,输出剩余的初始编号n+2次聚合子集作为目标初始编号聚合子集,其中n为自然数;以及输出结果整合单元736,可分别与第二过滤输出单元733和类推迭代单元735连接,适于整合前述所输出的目标初始编号聚合子集得到初始编号聚合子集结果,使用统一标识符对初始编号聚合子集结果进行编号,得到统一标识符-初始编号聚合子集关系表。优选地,第二聚合单元732还适于:以初始编号为key,对二次编号-初始编号-初始编号一次聚合子集关系表进行聚合,得到一个或多个初始编号二次聚合子集和对应的二次编号聚合子集,其中,每个二次编号聚合子集都由二次编号构成,每个初始编号二次聚合子集由与其对应的二次编号聚合子集中的每个二次编号对应的初始编号一次聚合子集合并而成。相应地,第二过滤输出单元733还适于:判断一个或多个二次编号聚合子集中各子集是否为与其他二次编号聚合子集没有交集的孤立子集,若是,则对与该二次编号聚合子集对应的初始编号二次聚合子集进行去重后输出作为目标初始编号聚合子集。进一步地,第二过滤输出单元733还适于:统计每个二次编号聚合子集包含的元素数量;将元素数量为1的二次编号聚合子集判断为孤立子集。更进一步地,第二过滤输出单元733还适于:在统计每个二次编号聚合子集包含的元素数量后,判断各二次编号聚合子集包含的元素数量是否大于给定阈值;若是,则对与该二次编号聚合子集对应的初始编号二次聚合子集进行去重后输出作为目标初始编号聚合子集。在一个可选的实施例中,仍旧参照图8所示,id统一表示模块740可以包括:第三拆分单元741,适于将统一标识符-初始编号聚合子集关系表拆分成初始编号-统一标识符关系表;关系连接单元742,与第三拆分单元741连接,适于根据初始编号-统一标识符关系表和初始编号-id对关系表,得到统一标识符-id关系表;以及第三聚合单元743,与关系连接单元742连接,适于以统一标识符为key,对统一标识符-id关系表进行聚合,得到id的统一表示表。优选地,关系连接单元742还适于:对初始编号-统一标识符关系表和初始编号-id对关系表执行leftouterjoin命令,再通过map命令分离出统一标识符和id,得到统一标识符-id关系表。在一个可选的实施例中,数据预处理模块710还适于:将多个二维id关系源数据表整合成包括多个id对的二维id关系表。在一个可选的实施例中,上述各模块的编号的操作通过zipwithuniqueid命令进行。在一个可选的实施例中,上述各模块的聚合的操作通过reducebykey命令进行。基于同一发明构思,本发明实施例还提供了一种计算机存储介质。该计算机存储介质存储有计算机程序代码,当该计算机程序代码在计算设备上运行时,导致计算设备执行根据上述任意一个实施例或其组合所述的基于spark框架实现idmapping的方法。基于同一发明构思,本发明实施例还提供了一种计算设备。该计算设备可以包括:处理器;以及存储有计算机程序代码的存储器;当该计算机程序代码被处理器运行时,导致该计算设备执行根据上述任意一个实施例或其组合所述的基于spark框架实现idmapping的方法。根据上述任意一个可选实施例或多个可选实施例的组合,本发明实施例能够达到如下有益效果:本发明实施例提出的基于spark框架实现idmapping的方法和装置,在对获取的二维id关系表中的每个id对进行编号得到初始编号-id对关系表后,首先以id为key对初始编号-id对关系表进行拆分和id关系聚合,得到多个初始编号一次聚合子集,然后再以初始编号为key,对多个初始编号一次聚合子集进行拆分和编号关系聚合,得到初始编号聚合子集结果,进而以统一标识符对初始编号聚合子集结果进行编号,得到统一标识符-初始编号聚合子集关系表,最后,根据统一标识符-初始编号聚合子集关系表和初始编号-id对关系表得到统一标识符与id之间的对应关系,从而实现了用户id的统一表示。本发明基于spark分布式计算框架实现idmapping算法,利用数学上集合论的思想实现了海量用户数据集合的存储、过滤、拆分与聚合等操作,从而提高了idmapping算法的效率、准确性和可靠性。进一步地,以初始编号为key进行编号关系聚合的过程通过迭代运算实现,通过在每一次迭代运算中,输出聚合后所得到的与其他初始编号聚合子集无交集(即,无需再进行聚合)的初始编号聚合子集,可以使每次迭代运算中剩余的子集(即,待下一次迭代运算中被拆分和聚合的子集)的数量越来越少,从而进一步减少内存开销,提高运算效率。所属领域的技术人员可以清楚地了解到,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,为简洁起见,在此不另赘述。另外,在本发明各个实施例中的各功能单元可以物理上相互独立,也可以两个或两个以上功能单元集成在一起,还可以全部功能单元都集成在一个处理单元中。上述集成的功能单元既可以采用硬件的形式实现,也可以采用软件或者固件的形式实现。本领域普通技术人员可以理解:所述集成的功能单元如果以软件的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包括若干指令,用以使得一台计算设备(例如个人计算机,服务器,或者网络设备等)在运行所述指令时执行本发明各实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom)、随机存取存储器(ram),磁碟或者光盘等各种可以存储程序代码的介质。或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的计算设备)来完成,所述程序指令可以存储于一计算机可读取存储介质中,当所述程序指令被计算设备的处理器执行时,所述计算设备执行本发明各实施例所述方法的全部或部分步骤。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:在本发明的精神和原则之内,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案脱离本发明的保护范围。根据本发明实施例的一方面,提供了a1.一种基于spark框架实现idmapping的方法,包括:步骤s1:获取包括多个id对的二维id关系表,对每个id对进行编号,得到初始编号-id对关系表;步骤s2:以id为key,对所述初始编号-id对关系表进行拆分和聚合,得到多个初始编号一次聚合子集,其中,每个初始编号一次聚合子集都由初始编号构成;步骤s3:以初始编号为key,对所述多个初始编号一次聚合子集进行拆分和聚合,得到初始编号聚合子集结果,其中,所述初始编号聚合子集结果中任意两个初始编号聚合子集之间都不存在交集;使用统一标识符对所述初始编号聚合子集结果进行编号,得到统一标识符-初始编号聚合子集关系表;步骤s4:根据所述统一标识符-初始编号聚合子集关系表和所述初始编号-id对关系表,得到统一标识符与id之间的对应关系,实现id的统一表示。a2.根据a1所述的方法,其中,以初始编号为key,对所述多个初始编号一次聚合子集进行拆分和聚合,得到初始编号聚合子集结果,包括:以初始编号为key,以所述多个初始编号一次聚合子集作为初次迭代运算的拆分和聚合的对象,进行拆分和聚合的迭代运算,得到所述初始编号聚合子集结果;其中,在每一次迭代运算中,输出聚合后所得到的与其他初始编号聚合子集无交集的初始编号聚合子集,并将剩余的初始编号聚合子集作为下一次迭代运算的拆分和聚合的对象;直到在一次迭代运算中剩余的初始编号聚合子集之间无法再进行聚合时,输出该剩余的初始编号聚合子集,终止迭代运算,并整合每次迭代运算中输出的初始编号聚合子集得到所述初始编号聚合子集结果。a3.根据a1或a2所述的方法,其中,步骤s2具体包括:将所述初始编号-id对关系表拆分成初始编号-id关系表;以id为key,对所述初始编号-id关系表进行聚合,得到多个初始编号一次聚合子集,其中,每个初始编号一次聚合子集都由初始编号构成;对所述初始编号一次聚合子集进行重新编号,得到二次编号-初始编号一次聚合子集关系表。a4.根据a3所述的方法,其中,在进行聚合得到多个初始编号一次聚合子集后,步骤s2还包括:判断所述多个初始编号一次聚合子集中各子集是否为与其他初始编号一次聚合子集没有交集的孤立子集;若是,则输出该初始编号一次聚合子集作为目标初始编号聚合子集,并对剩余的初始编号一次聚合子集进行重新编号。a5.根据a4所述的方法,其中,判断所述多个初始编号一次聚合子集中各子集是否为与其他初始编号一次聚合子集没有交集的孤立子集,包括:统计每个初始编号一次聚合子集的出现次数和包含的元素数量;将出现次数为2且元素数量为1的初始编号一次聚合子集判断为孤立子集。a6.根据a3-a5中任一项所述的方法,其中,步骤s3具体包括:步骤s31:将所述二次编号-初始编号一次聚合子集关系表拆分成二次编号-初始编号-初始编号一次聚合子集关系表;步骤s32:以初始编号为key,对所述二次编号-初始编号-初始编号一次聚合子集关系表进行聚合,得到一个或多个初始编号二次聚合子集;步骤s33:过滤并输出与其他初始编号二次聚合子集不存在交集的初始编号二次聚合子集作为目标初始编号聚合子集;步骤s34:对剩余的初始编号二次聚合子集进行去重,并重新编号,得到三次编号-初始编号二次聚合子集关系表;步骤s35:以此类推,重复步骤s31至s34进行n次迭代运算,直到剩余的初始编号n+2次聚合子集数量为0或1,输出剩余的初始编号n+2次聚合子集作为目标初始编号聚合子集,其中n为自然数;步骤s36:整合前述步骤所输出的目标初始编号聚合子集得到所述初始编号聚合子集结果,使用统一标识符对所述初始编号聚合子集结果进行编号,得到统一标识符-初始编号聚合子集关系表。a7.根据a6所述的方法,其中,步骤s32具体包括:以初始编号为key,对所述二次编号-初始编号-初始编号一次聚合子集关系表进行聚合,得到一个或多个初始编号二次聚合子集和对应的二次编号聚合子集,其中,每个二次编号聚合子集都由二次编号构成,每个初始编号二次聚合子集由与其对应的二次编号聚合子集中的每个二次编号对应的初始编号一次聚合子集合并而成;步骤s33具体包括:判断所述一个或多个二次编号聚合子集中各子集是否为与其他二次编号聚合子集没有交集的孤立子集,若是,则对与该二次编号聚合子集对应的初始编号二次聚合子集进行去重后输出作为目标初始编号聚合子集。a8.根据a7所述的方法,其中,判断所述一个或多个二次编号聚合子集中各子集是否为与其他二次编号聚合子集没有交集的孤立子集,包括:统计每个二次编号聚合子集包含的元素数量;将元素数量为1的二次编号聚合子集判断为孤立子集。a9.根据a8所述的方法,其中,在统计每个二次编号聚合子集包含的元素数量后,步骤s33还包括:判断各二次编号聚合子集包含的元素数量是否大于给定阈值;若是,则对与该二次编号聚合子集对应的初始编号二次聚合子集进行去重后输出作为目标初始编号聚合子集。a10.根据a1-a9中任一项所述的方法,其中,步骤s4具体包括:将所述统一标识符-初始编号聚合子集关系表拆分成初始编号-统一标识符关系表;根据所述初始编号-统一标识符关系表和所述初始编号-id对关系表,得到统一标识符-id关系表;以统一标识符为key,对所述统一标识符-id关系表进行聚合,得到id的统一表示表。a11.根据a10所述的方法,其中,根据所述初始编号-统一标识符关系表和所述初始编号-id对关系表,得到统一标识符-id关系表,包括:对所述初始编号-统一标识符关系表和所述初始编号-id对关系表执行leftouterjoin命令,再通过map命令分离出统一标识符和id,得到统一标识符-id关系表。a12.根据a1-a11中任一项所述的方法,其中,获取包括多个id对的二维id关系表,包括:将多个二维id关系源数据表整合成所述包括多个id对的二维id关系表。a13.根据a1-a12中任一项所述的方法,其中,编号的操作通过zipwithuniqueid命令进行。a14.根据a1-a13中任一项所述的方法,其中,聚合的操作通过reducebykey命令进行。根据本发明实施例的另一方面,还提供了b15.一种基于spark框架实现idmapping的装置,包括:数据预处理模块,适于获取包括多个id对的二维id关系表,对每个id对进行编号,得到初始编号-id对关系表;id关系聚合模块,适于以id为key,对所述初始编号-id对关系表进行拆分和聚合,得到多个初始编号一次聚合子集,其中,每个初始编号一次聚合子集都由初始编号构成;编号关系聚合模块,适于以初始编号为key,对所述多个初始编号一次聚合子集进行拆分和聚合,得到初始编号聚合子集结果,其中,所述初始编号聚合子集结果中任意两个初始编号聚合子集之间都不存在交集;使用统一标识符对所述初始编号聚合子集结果进行编号,得到统一标识符-初始编号聚合子集关系表;以及id统一表示模块,适于根据所述统一标识符-初始编号聚合子集关系表和所述初始编号-id对关系表,得到统一标识符与id之间的对应关系,实现id的统一表示。b16.根据b15所述的装置,其中,所述编号关系聚合模块还适于:以初始编号为key,以所述多个初始编号一次聚合子集作为初次迭代运算的拆分和聚合的对象,进行拆分和聚合的迭代运算,得到所述初始编号聚合子集结果;其中,在每一次迭代运算中,输出聚合后所得到的与其他初始编号聚合子集无交集的初始编号聚合子集,并将剩余的初始编号聚合子集作为下一次迭代运算的拆分和聚合的对象;直到在一次迭代运算中剩余的初始编号聚合子集之间无法再进行聚合时,输出该剩余的初始编号聚合子集,终止迭代运算,并整合每次迭代运算中输出的初始编号聚合子集得到所述初始编号聚合子集结果。b17.根据b15或b16所述的装置,其中,所述id关系聚合模块包括:第一拆分单元,适于将所述初始编号-id对关系表拆分成初始编号-id关系表;第一聚合单元,适于以id为key,对所述初始编号-id关系表进行聚合,得到多个初始编号一次聚合子集,其中,每个初始编号一次聚合子集都由初始编号构成;以及第一编号单元,适于对所述初始编号一次聚合子集进行重新编号,得到二次编号-初始编号一次聚合子集关系表。b18.根据b17所述的装置,其中,所述id关系聚合模块还包括:第一过滤输出单元,适于在所述第一聚合单元进行聚合得到多个初始编号一次聚合子集后,判断所述多个初始编号一次聚合子集中各子集是否为与其他初始编号一次聚合子集没有交集的孤立子集;若是,则输出该初始编号一次聚合子集作为目标初始编号聚合子集,并触发所述第一编号单元对剩余的初始编号一次聚合子集进行重新编号。b19.根据b18所述的装置,其中,所述第一过滤输出单元还适于:统计每个初始编号一次聚合子集的出现次数和包含的元素数量;将出现次数为2且元素数量为1的初始编号一次聚合子集判断为孤立子集。b20.根据b17-b19中任一项所述的装置,其中,所述编号关系聚合模块包括:第二拆分单元,适于将所述二次编号-初始编号一次聚合子集关系表拆分成二次编号-初始编号-初始编号一次聚合子集关系表;第二聚合单元,适于以初始编号为key,对所述二次编号-初始编号-初始编号一次聚合子集关系表进行聚合,得到一个或多个初始编号二次聚合子集;第二过滤输出单元,适于过滤并输出与其他初始编号二次聚合子集不存在交集的初始编号二次聚合子集作为目标初始编号聚合子集;第二编号单元,适于对剩余的初始编号二次聚合子集重新编号,得到三次编号-初始编号二次聚合子集关系表;类推迭代单元,适于触发所述第二拆分单元、所述第二聚合单元、所述第二过滤输出单元和所述第二编号单元以此类推进行n次迭代运算,直到剩余的初始编号n+2次聚合子集数量为0或1,输出剩余的初始编号n+2次聚合子集作为目标初始编号聚合子集,其中n为自然数;以及输出结果整合单元,适于整合前述所输出的目标初始编号聚合子集得到所述初始编号聚合子集结果,使用统一标识符对所述初始编号聚合子集结果进行编号,得到统一标识符-初始编号聚合子集关系表。b21.根据b20所述的装置,其中,所述第二聚合单元还适于:以初始编号为key,对所述二次编号-初始编号-初始编号一次聚合子集关系表进行聚合,得到一个或多个初始编号二次聚合子集和对应的二次编号聚合子集,其中,每个二次编号聚合子集都由二次编号构成,每个初始编号二次聚合子集由与其对应的二次编号聚合子集中的每个二次编号对应的初始编号一次聚合子集合并而成;所述第二过滤输出单元还适于:判断所述一个或多个二次编号聚合子集中各子集是否为与其他二次编号聚合子集没有交集的孤立子集,若是,则对与该二次编号聚合子集对应的初始编号二次聚合子集进行去重后输出作为目标初始编号聚合子集。b22.根据b21所述的装置,其中,所述第二过滤输出单元还适于:统计每个二次编号聚合子集包含的元素数量;将元素数量为1的二次编号聚合子集判断为孤立子集。b23.根据b22所述的装置,其中,所述第二过滤输出单元还适于:在统计每个二次编号聚合子集包含的元素数量后,判断各二次编号聚合子集包含的元素数量是否大于给定阈值;若是,则对与该二次编号聚合子集对应的初始编号二次聚合子集进行去重后输出作为目标初始编号聚合子集。b24.根据b15-b23中任一项所述的装置,其中,所述id统一表示模块包括:第三拆分单元,适于将所述统一标识符-初始编号聚合子集关系表拆分成初始编号-统一标识符关系表;关系连接单元,适于根据所述初始编号-统一标识符关系表和所述初始编号-id对关系表,得到统一标识符-id关系表;以及第三聚合单元,适于以统一标识符为key,对所述统一标识符-id关系表进行聚合,得到id的统一表示表。b25.根据b24所述的装置,其中,所述关系连接单元还适于:对所述初始编号-统一标识符关系表和所述初始编号-id对关系表执行leftouterjoin命令,再通过map命令分离出统一标识符和id,得到统一标识符-id关系表。b26.根据b15-b25中任一项所述的装置,其中,所述数据预处理模块还适于:将多个二维id关系源数据表整合成所述包括多个id对的二维id关系表。b27.根据b15-b26中任一项所述的装置,其中,编号的操作通过zipwithuniqueid命令进行。b28.根据b15-b27中任一项所述的装置,其中,聚合的操作通过reducebykey命令进行。根据本发明实施例的再一方面,还提供了c29.一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行根据a1-a14中任一项所述的基于spark框架实现idmapping的方法。根据本发明实施例的又一方面,还提供了d30.一种计算设备,包括:处理器;以及存储有计算机程序代码的存储器;当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行根据a1-a14中任一项所述的基于spark框架实现idmapping的方法。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1