CN109033295A - 超大数据集的合并方法及装置 - Google Patents
超大数据集的合并方法及装置 Download PDFInfo
- Publication number
- CN109033295A CN109033295A CN201810772324.5A CN201810772324A CN109033295A CN 109033295 A CN109033295 A CN 109033295A CN 201810772324 A CN201810772324 A CN 201810772324A CN 109033295 A CN109033295 A CN 109033295A
- Authority
- CN
- China
- Prior art keywords
- data
- fragmentation
- data set
- major key
- data fragmentation
- 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
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种超大数据集的合并方法及装置,涉及数据处理技术领域,用于解决现有技术中超大数据集的合并效率偏低的问题。本发明提供的方法及装置基于分布式计算实现,包括:将第一数据集的第一关联主键转换为预设字段类型的数据后根据第一关联主键对第一数据集进行分片,获取预设数量的第一数据分片并将其缓存至预设缓存***;将第二数据集的第二关联主键转换为预设字段类型的数据后根据第二关联主键对第二数据集进行分片,获取预设数量的第二数据分片;从预设缓存***中读取第一数据分片,对第一数据分片和第二数据分片进行匹配,并将匹配后的第一数据分片和第二数据分片进行合并。本发明能够用于对超大数据集进行合并。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种超大数据集的合并方法及装置。
背景技术
超大数据集是由数据量级非常大的数据集所组成的数据集的集合。目前,由于超大数据集具有非常大的数据量级,同时新增数据量级也非常大,受到***内存和磁盘的等***资源条件的限制,超大数据集难以存储到关系型数据库中,因此在对两个关联的超大数据集进行关联分析,通常会将两个关联的超大数据集进行合并,将针对两个关联的超大数据集进行关联分析的过程转换为针对单一数据集的检索、分类和统计,以降低从关联的超大数据集中挖掘信息的难度。
然而,实际情况中,在对两个关联的超大数据集进行合并时,通常都是将一些数据量级较小的数据集先存储到数据库中,数据量级较大的数据集拆分为多块数据分片后与存储到数据库中的数据集并行执行合并,上述过程主要存在以下问题:首先,现有技术中对数据集进行分片的分片结果中会出现数据倾斜的情况,即出现大量数据被集中分在一个或多个少量分片上进行数据合并计算,而剩余的少量数据又被分在剩余的大量分片上进行数据合并计算,由于合并计算的整体效率是根据全部分片的计算效率决定的,而上述少量分片的合并计算效率远远低于全部分片的平均合并计算效率,由此大大降低了数据集的整体合并效率;其次,在执行合并的过程中,需要逐条遍历每块数据分片的数据,即每读取一条数据,则需要向数据库发送一次访问请求以查找数据库中是否存在能够与上述数据进行合并的对应数据,由此导致对数据库的请求次数过多,网络压力升高;同时,受限于数据库性能,多数数据库的请求次数有限,极大限制了数据集的整体合并效率的提升。
发明内容
本发明的实施例提供一种超大数据集的合并方法以及装置,用于解决现有技术中超大数据集的合并效率偏低的问题。
为了达到上述目的,本发明采用如下技术方案:
第一方面,本发明提供一种超大数据集的合并方法,该方法基于分布式计算实现,包括:
将第一数据集的第一关联主键转换为预设字段类型的数据后根据第一关联主键对第一数据集进行分片,获取预设数量的第一数据分片并将其缓存至预设缓存***;
将第二数据集的第二关联主键转换为预设字段类型的数据后根据第二关联主键对第二数据集进行分片,获取预设数量的第二数据分片;
从预设缓存***中读取第一数据分片,对第一数据分片和第二数据分片进行匹配,并将匹配后的第一数据分片和第二数据分片进行合并。
在本发明提供的超大数据集的合并方法中,能够将两个待合并的数据集的关联主键转换为预设字段类型的数据,以使得在基于分布式计算对两个待合并的数据集进行分片时,能够根据转换为预设字段类型的数据的关联主键将数据集中的数据尽可能均匀地分配到数据集的每个分片上,有效避免分片结果中出现数据倾斜的情况,提升数据集整体合并效率;同时,本发明通过将待合并的数据集缓存至预设缓存***来代替将待合并的数据集存储至数据库,使数据集的合并过程不再受到访问数据库压力以及访问数据库次数的限制,有效提升数据集的整体合并效率。
可选地,预设字段类型为字节型,预设字段类型的数据为字节型的long值。
可选地,将第一数据集的第一关联主键转换为预设字段类型的数据后根据第一关联主键对第一数据集进行分片具体为:
预先读取第一数据集中的第一数据,提取第一数据中需要合并的第一字段;
判断第一字段是否有效;
若判断结果为是,将第一数据集的第一关联主键转换为字节型并获取第一关联主键的long值;
计算第一数据集的第一关联主键long值的第一哈希值,根据第一哈希值对第一数据集进行分片,获取预设数量的第一数据分片并将其缓存至预设缓存***。
可选地,将第二数据集的第二关联主键转换为预设字段类型的数据后根据第二关联主键对第二数据集进行分片具体为:
预先读取第二数据集中的第二数据,提取第二数据中需要合并的第二字段;
判断第二字段是否有效;
若判断结果为是,将第二数据集的第二关联主键转换为字节型并获取第二关联主键的long值;
计算第二关联主键long值的第二哈希值,根据第二哈希值对第二数据集进行分片。
可选地,为每个第一数据分片分配对应的分片号、以及为每个第二数据分片分配对应的分片号;
则从预设缓存***中读取第一数据分片,对第一数据分片和第二数据分片进行匹配具体为:
从预设缓存***中读取第一数据分片,为每个第一数据分片分配对应的分片号、以及为每个第二数据分片分配对应的分片号。
可选地,将匹配的第一数据分片和第二数据分片进行合并具体为:
预先重组第二数据分片的第二数据分片数据;
从预设缓存***中逐条读取第一数据分片中的第一数据分片数据,查找与第一数据分片匹配的第二数据分片中是否存在第一数据分片数据的第一关联主键;
若是,则根据第一数据分片数据的第一关联主键以及预设的关联条件查找第二数据分片中是否存在与第一数据分片数据匹配的第二数据分片数据;
若是,则将第一数据分片数据与第二数据分片数据进行合并。
可选地,根据第一数据集以及第二数据集的数据大小确定预设数量。
第二方面,本发明提供一种超大数据集的合并装置,该装置基于分布式计算实现,包括:
第一分片模块,用于将第一数据集的第一关联主键转换为预设字段类型的数据后根据第一关联主键对第一数据集进行分片,获取预设数量的第一数据分片并将其缓存至预设缓存***;
第二分片模块,用于将第二数据集的第二关联主键转换为预设字段类型的数据后根据第二关联主键对第二数据集进行分片,获取预设数量的第二数据分片;
匹配模块,用于从预设缓存***中读取第一数据分片,对第一数据分片和第二数据分片进行匹配;
合并模块,用于将匹配后的第一数据分片和第二数据分片进行合并。
可选地,预设字段类型为字节型,预设字段类型的数据为字节型的long值。
可选地,第一分片模块具体用于:
预先读取第一数据集中的第一数据,提取第一数据中需要合并的第一字段;
判断第一字段是否有效;
若判断结果为是,将第一数据集的第一关联主键转换为字节型并获取第一关联主键的long值;
计算第一数据集的第一关联主键long值的第一哈希值,根据第一哈希值对第一数据集进行分片,获取预设数量的第一数据分片并将其缓存至预设缓存***。
可选地,第二分片模块具体用于:
预先读取第二数据集中的第二数据,提取第二数据中需要合并的第二字段;
判断第二字段是否有效;
若判断结果为是,将第二数据集的第二关联主键转换为字节型并获取第二关联主键的long值;
计算第二关联主键long值的第二哈希值,根据第二哈希值对第二数据集进行分片。
可选地,为每个第一数据分片分配对应的分片号、以及为每个第二数据分片分配对应的分片号;
则匹配模块具体用于:
从预设缓存***中读取第一数据分片,根据第一数据分片的分片号以及第二数据分片的分片号对第一数据分片和第二数据分片进行匹配。
可选地,合并模块具体用于:
预先重组第二数据分片的第二数据分片数据;
从预设缓存***中逐条读取第一数据分片中的第一数据分片数据,在与第一数据分片匹配的第二数据分片中查找是否存在第一数据分片数据的第一关联主键;
若是,则根据第一数据分片数据的第一关联主键以及预设的关联条件查找第二数据分片是否存在与第一数据分片数据匹配的第二数据分片数据;
若是,则将第一数据分片数据与第二数据分片数据进行合并。
可选地,根据第一数据集以及第二数据集的数据大小确定预设数量。
第三方面,提供一种超大数据集的合并装置,包括通信接口、处理器、存储器、总线;存储器用于存储计算机执行指令,处理器与存储器通过总线连接,当智能探针装置运行时,处理器执行存储器存储的计算机执行指令,以使超大数据集的合并装置执行上述第一方面的方法。
第四方面,提供一种超大数据集的合并***,包括上述超大数据集的合并装置、以及预设缓存***。
第五方面,提供一种存储介质,存储介质存储有指令代码,指令代码用于执行上述第一方面的方法。
第六方面,提供一种计算机程序产品,计算机程序产品包括指令代码,指令代码用于执行上述第一方面的方法。
可以理解地,上述提供的任一种超大数据集合并装置、超大数据集合并***、存储介质或计算机程序产品均用于执行上文所提供的第一方面对应的方法,因此,其所能达到的有益效果可参考上文第一方面的方法以及下文具体实施方式中对应的方案的有益效果,此处不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的一种超大数据集的合并方法的步骤流程图;
图2为本发明一实施例提供的另一种超大数据集的合并方法的步骤流程图;
图3为本发明一实施例提供的另一种超大数据集的合并方法的步骤流程图;
图4为本发明一实施例提供的另一种超大数据集的合并方法的步骤流程图;
图5为本发明一实施例提供的一种超大数据集的合并装置的结构示意图;
图6为本发明一实施例提供的另一种超大数据集的合并装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。术语“第一”和“第二”等的使用不表示任何顺序,可将上述术语解释为所描述对象的名称。在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。此外,在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。
图1为本发明一实施例提供的一种超大数据集的合并方法的步骤流程图。本实施例中的方法基于分布式计算实现,如图1所示,本实施例中的方法包括如下步骤:
步骤S101:将第一数据集的第一关联主键转换为预设字段类型的数据后根据第一关联主键对第一数据集进行分片,获取预设数量的第一数据分片并将其缓存至预设缓存***。
其中,第一数据集即需要进行合并的数据集,第一关联主键即第一数据集中各数据表的主键。预设字段类型的数据中可以包含第一关联主键的全部字段信息。其中,预设字段类型可以为字节(Byte)型,预设字段类型的数据可以为根据预设字段类型以及预设算法对第一关联主键对应操作后所得的第一关联主键的long值,等等。在这里,要说明的是,现有技术中一般会将IP地址作为关联主键,然后根据IP地址采用哈希算法对数据集进行分片,为了使数据分片结果中的数据倾斜程度最小,一般会将数据最多分为256份,并取IP地址的最后一段字段进行哈希运算取余以对数据集进行分片。然而,由于IP地址的最后一段字段一般会存在大量保留字段如xxx.xxx.xxx.0,比如在10个IP地址中,存在5个IP地址的最后一段字段存在保留字段如xxx.xxx.xxx.0,IP地址后缀(即最后一段字段)数据不够离散,由此导致根据IP地址最后一段字段进行分片的结果中的数据也不够离散,无法避免出现数据倾斜的情况;当分片数量小于256时,例如分片数量为255,若采用上述方式对数据进行分片,会进一步破坏分片结果中数据的离散性,导致数据倾斜的情况更为严重;同时,哈希算法也只适用于关联主键为IP地址的情况,若将关联主键设置为除IP地址以外的其它类型数据,则无法采用哈希算法对关联主键进行数据分片。为了解决上述问题,在本发明中,可以将第一数据集的第一关联主键转换为预设字段类型的数据,预设字段类型的数据中可以包含第一关联主键的全部字段信息并且可以进行哈希运算,因此将第一数据集的第一关联主键转换为预设字段类型的数据能够保证第一关联主键中的每一位数据在进行数据分片时能够被进行运算,从而最大限度保证第一数据集分片结果中的数据具有较高的离散程度,有效避免分片结果中出现数据倾斜的情况,同时也有效扩大了哈希算法的适用范围。
具体实施中,上述过程中获取第一关联主键的long值的方式可以由本领域技术人员根据实际情况进行设定,本发明对此不作限定。在一种优选的方式中,上述long值的获取方式可以为:将第一关联主键的字段类型转换为字节型后,将转换为字节型的第一关联主键与特定长度的算法种子反复进行与或等相关操作,然后取上述操作结果的绝对值作为第一关联主键的long值。其中,上述特定长度的算法种子以及对第一关联主键与特定长度的算法种子反复进行的与或等相关操作的过程可以由本领域技术人员根据实际情况进行设置,本发明对此不作限定。当然,可以理解的是,具体实施中,预设的字段类型还可以为其它类型,预设字段类型的数据还可以为除上述long值以外的其它类型的数据,只要有效避免分片结果中出现数据倾斜的情况即可。
具体实施中,上述预设数量可以根据第一数据集以及第二数据集(即后续步骤S102中的第二数据集)的数据大小确定。当第一数据集以及第二数据集的数据量较大时,则对应增大上述预设数量;反之则对应减少上述预设数量。
预设的缓存***可以为HDFS(Hadoop Distributed Filesystem,Hadoop分布式文件***)或者其它类似的分布式文件存储***。具体实施中,本步骤可以采用大数据计算框架Spark技术执行,或者也可以采用hadoop的MR、hive执行引擎,以及历史实时计算引擎storm等类似的大数据处理技术执行。
步骤S102:将第二数据集的第二关联主键转换为预设字段类型的数据后根据第二关联主键对第二数据集进行分片,获取预设数量的第二数据分片。
具体地,本步骤中预设字段类型的数据以及根据第二关联主键对第二数据集进行分片的过程与步骤S101类似,具体可以参见步骤S101中的对应描述,此处不再赘述。
获取预设数量的第二数据分片所采用的技术与步骤S101中采用的技术相同,具体可参照步骤S101中的对应描述,此处不再赘述。
步骤S103:从预设缓存***中读取第一数据分片,对第一数据分片和第二数据分片进行匹配,并将匹配后的第一数据分片和第二数据分片进行合并。
具体地,对第一数据分片和第二数据分片进行匹配的匹配方式可以有多种,例如,若采用Spark技术执行步骤S101以及步骤S102,则Spark会自动为第一数据分片建立索引以及为第二数据分片建立索引,则可以根据第一数据分片的索引以及第二数据分片的索引对第一数据分片和第二数据分片进行匹配。例如,第一数据分片包含数据分片1、数据分片2、以及数据分片3共3个数据分片,Spark为第一数据分片建立的索引为:1-数据分片1,2-数据分片2,3-数据分片3;第二数据分片包含数据分片a、数据分片b、以及数据分片c共3个数据分片,Spark为第二数据分片建立的索引为:1-数据分片a,2-数据分片b,3-数据分片c。则可以将第一数据分片与第二数据分片中索引相同的数据分片进行匹配,即数据分片1与数据分片a匹配(二者索引都为1)、数据分片2与数据分片b匹配(二者索引都为2)、数据分片3与数据分片c匹配(二者索引都为3)。
当然,可以理解的是,具体实施中也可以采用除上述列举方式以外的其它方式对第一数据分片和第二数据分片进行匹配,例如根据IP地址或者根据生成数据分片的时间信息进行匹配等等,本发明对第一数据分片和第二数据分片进行匹配的匹配方式不作限定。
在对第一数据分片和第二数据分片进行合并时,可以根据第一数据分片的第一关联主键、第二数据分片的第二关联主键以及预设的关联条件确定第一数据分片与第二数据分片之间是否存在可以进行合并的数据,若存在可以进行合并的数据,则对可以进行合并的数据进行合并。其中,上述预设的关联条件可以由本领域技术人员根据实际情况进行设置,本发明对此不作限定。
由此可见,在本发明提供的超大数据集的合并方法中,能够将两个待合并的数据集的关联主键转换为预设字段类型的数据,以使得在对两个待合并的数据集基于分布式计算进行分片时,根据转换为预设字段类型的数据的关联主键将数据集中的数据尽可能均匀地分配到数据集的每个分片上,有效避免分片结果中数据倾斜情况的出现,提升数据集整体合并效率;同时,本发明通过将待合并的数据集缓存至预设缓存***来代替将待合并的数据集存储至数据库,使数据集的合并过程不再需要大量访问数据库,进一步提升了数据集的整体合并效率。
其中,步骤S101具体可以采用如下方案实施,该方案中采用Spark技术对第一数据集进行分片,预设缓存***采用HDFS,具体参照图2所示,包括如下步骤:
步骤S201:预先读取第一数据集中的第一数据,提取第一数据中需要合并的第一字段。
其中,超大数据集由多个文件构成,在读取第一数据时,由于***内存的限制,一次性完整读取并处理超大数据集会超出内存负荷,因此可以分批次读取并处理整个超大数据集。例如,可以每个批次读取多个文件的第一数据至***内存,然后在***内存中对读取的多个文件的第一数据执行本步骤以及后续步骤(对应步骤S202-S205)中的对应处理,并在处理完成后采用预设方式(例如使用union()函数)对处理结果进行合并输出,以达到更好的读写性能效果。
其中,可以使用map()函数逐条处理从第一数据集中读取的每条第一数据并提取出需要合并的第一字段。需要合并的第一字段即最终合并数据时所需要的字段,第一字段具体可以由本领域技术人员根据实际情况进行设定,本发明对此不作限定。
步骤S202:判断第一字段是否有效;若判断结果为否,则执行步骤S203;若判断结果为是,则执行步骤S204。
根据预设的校验规则对第一字段的有效性进行校验,以判断第一字段是否有效。预设的校验规则可以由本领域技术人员根据实际情况进行设定,本发明对此不作限定。
步骤S203:丢弃与该第一字段对应的第一数据。
步骤S204:将第一数据集的第一关联主键转换为字节型并获取第一关联主键的long值。
获取第一关联主键的long值的具体获取方式可参照步骤S101中的对应描述,此处不再赘述。
步骤S205:计算第一数据集的第一关联主键long值的第一哈希值,根据第一哈希值对第一数据集进行分片,获取预设数量的第一数据分片并将其缓存至预设缓存***。
具体地,第一哈希值通过对分片数(即预设数量)取余,将所得余数作为第一关联主键对应数据集的分片位置,将第一关联主键对应数据集存储在该分片位置上,以实现对第一数据集进行分片的目的,然后将分片后的数据缓存至预设缓存***。
另外,在对第一数据集进行分片之后,可以为每个第一数据分片分配对应的分片号,并将每个第一数据分片的分片号通过index()函数索引到该第一数据分片的第一哈希值,以在分片号和第一数据分片之间建立对应关系,用于对第一数据分片和第二数据分片进行匹配。
在采用图2所示方案的基础上,步骤S102具体可以采用如下方案实施,参照图3所示,包括如下步骤:
步骤S301:预先读取第二数据集中的第二数据,提取第二数据中需要合并的第二字段。
步骤S302:判断第二字段是否有效;若判断结果为否,则执行步骤S303;若判断结果为是,则执行步骤S304。
步骤S303:丢弃与该第二字段对应的第二数据。
步骤S304:将第二数据集的第二关联主键转换为字节型并获取第二关联主键的long值。
其中,步骤S301-步骤S304的过程可以参照步骤S201-步骤S204中的对应描述,此处不再赘述。
步骤S305:计算第二关联主键long值的第二哈希值,根据第二哈希值对第二数据集进行分片。
其中,第二哈希值通过对分片数(即预设数量)取余,将所得余数作为第二关联主键对应数据集的分片位置,将第二关联主键对应数据集存储在该分片位置上,以实现对第二数据集进行分片的目的。
另外,在对第二数据集进行分片之后,可以为每个第二数据分片分配对应的分片号,并将每个第二数据分片的分片号通过index()函数索引到该第二数据分片的第二哈希值,以在分片号和第二数据分片之间建立对应关系,用于对第一数据分片和第二数据分片进行匹配。
根据上述图2和图3所示的实施过程,步骤S103可以采用如下方案实施,具体参照图4所示,该方案包括如下步骤:
步骤S401:从预设缓存***中读取第一数据分片,对第一数据分片和第二数据分片进行匹配。
具体地,根据第一数据分片的分片号以及第二数据分片的分片号对第一数据分片和所述第二数据分片进行匹配。具体为可以将分片号相同的第一数据分片和第二数据分片作为匹配的数据分片。
步骤S402:预先重组第二数据分片的第二数据分片数据。
其中,将第二数据分片数据由iterator模式转换为Map()函数,以减少遍历次数,提高合并效率。具体可以将具有相同第二关联主键的第二数据分片数据组成list,并以第二关联主键为key,以上述list为value定义Map()。例如用map.put("A","B"),此时A是第二关联主键,B是具有相同第二关联主键的第二数据分片数据,则可以用map.get("A")取得B。
步骤S403:从预设缓存***中逐条读取第一数据分片中的第一数据分片数据,查找与第一数据分片匹配的第二数据分片中是否存在第一数据分片数据的第一关联主键;若否,则执行步骤S404;若是,则执行步骤S405。
具体地,在本方案在中,优选从预设缓存***中逐条读取第一数据分片中的每条第一数据分片数据,以供在后续步骤(步骤S404-步骤S407)中对第一数据分片中的第一数据分片数据的合并处理可以逐条执行,从而降低内存要求。当然,可以理解的是,上述读取方式和处理方式仅是一种优选方案,具体实施中,也可以从预设缓存***中一次读取多条第一数据分片数据,并同时对多条第一数据分片数据执行合并处理。
其中,在从预设缓存***中读取一条第一数据分片数据之后,可以将该第一数据分片数据分解为字段,然后根据该第一数据分片数据的第一关联主键的哈希值,在步骤S402定义的Map()函数中查找是否存在与该第一关联主键的哈希值相同的第二关联主键的哈希值,若否,则说明与该第一数据分片匹配的第二数据分片中不存在与该条第一数据分片数据的第一关联主键相同的第二关联主键,则执行步骤S404;若是,则执行步骤S405。
步骤S404:丢弃该第一数据分片数据。
步骤S405:根据第一数据分片数据的第一关联主键以及预设的关联条件查找第二数据分片中是否存在与第一数据分片数据匹配的第二数据分片数据;若否,则执行步骤S406;若是,则执行步骤S407。
根据第一数据分片数据的第一关联主键从步骤S402定义的Map()函数中提取出与该第一关联主键对应的list,并根据预设的关联条件查找该list中是否存在与第一数据分片数据匹配的第二数据分片数据,若否,则说明第二数据分片中不存在与上述第一数据分片数据关联的能够进行数据合并的第二数据分片数据,则执行步骤S406;若是,则执行步骤S407。
其中,预设的关联条件可以由本领域技术人员根据实际情况进行设置,本发明对此不作限定。
步骤S406:丢弃该第一数据分片数据。
步骤S407:将第一数据分片数据与第二数据分片数据进行合并。
优选可以采用map Partitions WithIndex()函数对第一数据分片数据与第二数据分片数据并行执行合并。
采用本发明提供的方法,假设并行执行合并的并行度为n,即将第一数据集分为n个第一数据分片,将第二数据集分为n个第二数据分片,则对第一数据分片以及第二数据分片进行匹配后可以获取n对小数据集,然后对上述n对小数据集执行并行度为n的合并。其中,假设关联的两个超大数据集的体量分别为x和y,在现有技术中,逐条遍历合并的复杂度为x*y,本发明中通过将n对小数据集并行执行合并,可以将合并的复杂度降低至(x/n)*(y/n),若忽略哈希运算的耗时,本发明耗时应近似可以为逐条遍历合并所需耗时的1/n/n,由此可见,本发明能够有效提升数据集整体合并的效率。另外,本发明还无需考虑***资源的限制(例如数据库访问压力以及访问次数的限制),因此不会丢失数据;本发明中的合并过程完全遵循预设的关联条件,若上述关联条件无误,本发明中数据集合并的成功率和准确率可以达到100%。
图5为本发明一实施例提供的一种超大数据集的合并装置的结构示意图。如图5所示,该装置包括:
第一分片模块51,用于将第一数据集的第一关联主键转换为预设字段类型的数据后根据第一关联主键对第一数据集进行分片,获取预设数量的第一数据分片并将其缓存至预设缓存***。
其中,预设字段类型为字节型,预设字段类型的数据为字节型的long值。
第一分片模块51具体用于:
预先读取第一数据集中的第一数据,提取第一数据中需要合并的第一字段;
判断第一字段是否有效;
若判断结果为是,将第一数据集的第一关联主键转换为字节型并获取第一关联主键的long值;
计算第一数据集的第一关联主键long值的第一哈希值,根据第一哈希值对第一数据集进行分片,获取预设数量的第一数据分片并将其缓存至预设缓存***。
第二分片模块52,用于将第二数据集的第二关联主键转换为预设字段类型的数据后根据第二关联主键对第二数据集进行分片,获取预设数量的第二数据分片。
其中,预设字段类型为字节型,预设字段类型的数据为字节型的long值。
第二分片模块52具体用于:
预先读取第二数据集中的第二数据,提取第二数据中需要合并的第二字段;
判断第二字段是否有效;
若判断结果为是,将第二数据集的第二关联主键转换为字节型并获取第二关联主键的long值;
计算第二关联主键long值的第二哈希值,根据第二哈希值对第二数据集进行分片。
匹配模块53,用于从预设缓存***中读取第一数据分片,对第一数据分片和第二数据分片进行匹配。其中,根据第一哈希值确定每个第一数据分片的分片号、以及根据第二哈希值确定每个第二数据分片的分片号;
则匹配模块53具体用于:
从预设缓存***中读取第一数据分片,根据第一数据分片的分片号以及第二数据分片的分片号对第一数据分片和第二数据分片进行匹配。
合并模块54,用于将匹配后的第一数据分片和第二数据分片进行合并。
合并模块54具体用于:
预先重组第二数据分片的第二数据分片数据;
从预设缓存***中逐条读取第一数据分片中的第一数据分片数据,在与第一数据分片匹配的第二数据分片中查找是否存在第一数据分片数据的第一关联主键;
若是,则根据第一数据分片数据的第一关联主键以及预设的关联条件查找第二数据分片是否存在与第一数据分片数据匹配的第二数据分片数据;
若是,则将第一数据分片数据与第二数据分片数据进行合并。
上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,其作用在此不再赘述。
在采用集成的模块的情况下,超大数据集的合并装置包括:存储单元、处理单元以及接口单元。处理单元用于对超大数据集的合并装置的动作进行控制管理,例如,处理单元用于支持超大数据集的合并装置执行图1-4中的各步骤。接口单元用于支持超大数据集的合并装置与其他装置的交互;存储单元,用于存储超大数据集的合并装置程序代码和数据。
其中,以处理单元为处理器,存储单元为存储器,接口单元为通信接口为例。其中,超大数据集的合并装置参照图6中所示,包括通信接口601、处理器602、存储器603和总线604,通信接口601、处理器602通过总线604与存储器603相连。
处理器602可以是一个通用中央处理器(Central Processing Unit,CPU),微处理器,特定应用集成电路(Application-Specific Integrated Circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
存储器603可以是只读存储器(Read-Only Memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(Random Access Memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasable Programmable Read-only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器603用于存储执行本申请方案的应用程序代码,并由处理器602来控制执行。通讯接口601用于支持超大数据集的合并装置与其他装置的交互。处理器602用于执行存储器603中存储的应用程序代码,从而实现本申请实施例中的超大数据集的合并方法。
本发明还提供一种超大数据集的合并***,包括上述任一超大数据集的合并装置、以及预设缓存***。预设缓存***具体可以参见步骤S101中的对应介绍,此处不再赘述。
本发明还提供一种计算存储媒体(或介质),包括在被执行时进行上述实施例中的方法的操作的指令,当指令在计算机上运行时,使得计算机执行上述的方法实施例。
另外,本发明还提供一种计算机程序产品,包括上述计算存储媒体(或介质)。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (14)
1.一种超大数据集的合并方法,其特征在于,所述方法基于分布式计算实现,包括:
将第一数据集的第一关联主键转换为预设字段类型的数据后根据所述第一关联主键对所述第一数据集进行分片,获取预设数量的第一数据分片并将其缓存至预设缓存***;
将第二数据集的第二关联主键转换为预设字段类型的数据后根据所述第二关联主键对所述第二数据集进行分片,获取预设数量的第二数据分片;
从所述预设缓存***中读取所述第一数据分片,对所述第一数据分片和所述第二数据分片进行匹配,并将匹配后的第一数据分片和第二数据分片进行合并。
2.根据权利要求1所述的超大数据集的合并方法,其特征在于,所述预设字段类型为字节型,所述预设字段类型的数据为long值。
3.根据权利要求2所述的超大数据集的合并方法,其特征在于,所述将第一数据集的第一关联主键转换为预设字段类型的数据后根据所述第一关联主键对所述第一数据集进行分片具体为:
预先读取所述第一数据集中的第一数据,提取所述第一数据中需要合并的第一字段;
判断所述第一字段是否有效;
若判断结果为是,将所述第一数据集的第一关联主键转换为字节型并获取所述第一关联主键的long值;
计算所述第一数据集的第一关联主键long值的第一哈希值,根据所述第一哈希值对所述第一数据集进行分片,获取预设数量的第一数据分片并将其缓存至预设缓存***。
4.根据权利要求3所述的超大数据集的合并方法,其特征在于,所述将第二数据集的第二关联主键转换为预设字段类型的数据后根据所述第二关联主键对所述第二数据集进行分片具体为:
预先读取所述第二数据集中的第二数据,提取所述第二数据中需要合并的第二字段;
判断所述第二字段是否有效;
若判断结果为是,将所述第二数据集的第二关联主键转换为字节型并获取所述第二关联主键的long值;
计算所述第二关联主键long值的第二哈希值,根据所述第二哈希值对所述第二数据集进行分片。
5.根据权利要求4所述的超大数据集的合并方法,其特征在于,为每个第一数据分片分配对应的分片号、以及为每个第二数据分片分配对应的分片号;
则所述从所述预设缓存***中读取所述第一数据分片,对所述第一数据分片和所述第二数据分片进行匹配具体为:
从所述预设缓存***中读取所述第一数据分片,根据所述第一数据分片的分片号以及所述第二数据分片的分片号对所述第一数据分片和所述第二数据分片进行匹配。
6.根据权利要求1所述的超大数据集的合并方法,其特征在于,所述将匹配的第一数据分片和第二数据分片进行合并具体为:
预先重组所述第二数据分片的第二数据分片数据;
从所述预设缓存***中逐条读取第一数据分片中的第一数据分片数据,查找与所述第一数据分片匹配的第二数据分片中是否存在所述第一数据分片数据的第一关联主键;
若是,则根据所述第一数据分片数据的第一关联主键以及预设的关联条件查找所述第二数据分片中是否存在与所述第一数据分片数据匹配的第二数据分片数据;
若是,则将所述第一数据分片数据与所述第二数据分片数据进行合并。
7.根据权利要求1所述的超大数据集的合并方法,其特征在于,根据所述第一数据集以及所述第二数据集的数据大小确定所述预设数量。
8.一种超大数据集的合并装置,其特征在于,所述装置基于分布式计算实现,包括:
第一分片模块,用于将第一数据集的第一关联主键转换为预设字段类型的数据后根据所述第一关联主键对所述第一数据集进行分片,获取预设数量的第一数据分片并将其缓存至预设缓存***;
第二分片模块,用于将第二数据集的第二关联主键转换为预设字段类型的数据后根据所述第二关联主键对所述第二数据集进行分片,获取预设数量的第二数据分片;
匹配模块,用于从所述预设缓存***中读取所述第一数据分片,对所述第一数据分片和所述第二数据分片进行匹配;
合并模块,用于将匹配后的第一数据分片和第二数据分片进行合并。
9.根据权利要求8所述的超大数据集的合并装置,其特征在于,所述预设字段类型为字节型,所述预设字段类型的数据为字节型的long值。
10.根据权利要求9所述的超大数据集的合并装置,其特征在于,所述第一分片模块具体用于:
预先读取所述第一数据集中的第一数据,提取所述第一数据中需要合并的第一字段;
判断所述第一字段是否有效;
若判断结果为是,将所述第一数据集的第一关联主键转换为字节型并获取所述第一关联主键的long值;
计算所述第一数据集的第一关联主键long值的第一哈希值,根据所述第一哈希值对所述第一数据集进行分片,获取预设数量的第一数据分片并将其缓存至预设缓存***。
11.根据权利要求10所述的超大数据集的合并装置,其特征在于,所述第二分片模块具体用于:
预先读取所述第二数据集中的第二数据,提取所述第二数据中需要合并的第二字段;
判断所述第二字段是否有效;
若判断结果为是,将所述第二数据集的第二关联主键转换为字节型并获取所述第二关联主键的long值;
计算所述第二关联主键long值的第二哈希值,根据所述第二哈希值对所述第二数据集进行分片。
12.根据权利要求11所述的超大数据集的合并装置,其特征在于,为每个第一数据分片分配对应的分片号、以及为每个第二数据分片分配对应的分片号;
则所述匹配模块具体用于:
从所述预设缓存***中读取所述第一数据分片,根据所述第一数据分片的分片号以及所述第二数据分片的分片号对所述第一数据分片和所述第二数据分片进行匹配。
13.根据权利要求8所述的超大数据集的合并装置,其特征在于,所述合并模块具体用于:
预先重组所述第二数据分片的第二数据分片数据;
从所述预设缓存***中逐条读取第一数据分片中的第一数据分片数据,在与所述第一数据分片匹配的第二数据分片中查找是否存在所述第一数据分片数据的第一关联主键;
若是,则根据所述第一数据分片数据的第一关联主键以及预设的关联条件查找所述第二数据分片是否存在与所述第一数据分片数据匹配的第二数据分片数据;
若是,则将所述第一数据分片数据与所述第二数据分片数据进行合并。
14.根据权利要求8所述的超大数据集的合并装置,其特征在于,根据所述第一数据集以及所述第二数据集的数据大小确定所述预设数量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810772324.5A CN109033295B (zh) | 2018-07-13 | 2018-07-13 | 超大数据集的合并方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810772324.5A CN109033295B (zh) | 2018-07-13 | 2018-07-13 | 超大数据集的合并方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109033295A true CN109033295A (zh) | 2018-12-18 |
CN109033295B CN109033295B (zh) | 2021-07-02 |
Family
ID=64642826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810772324.5A Active CN109033295B (zh) | 2018-07-13 | 2018-07-13 | 超大数据集的合并方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109033295B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110505276A (zh) * | 2019-07-17 | 2019-11-26 | 北京三快在线科技有限公司 | 对象匹配方法、装置及***、电子设备及存储介质 |
CN111198847A (zh) * | 2019-12-30 | 2020-05-26 | 广东奡风科技股份有限公司 | 一种适用于大数据集的数据并行处理方法、装置及*** |
CN111611243A (zh) * | 2020-05-13 | 2020-09-01 | 第四范式(北京)技术有限公司 | 数据处理方法及装置 |
CN112732650A (zh) * | 2020-12-31 | 2021-04-30 | 中国工商银行股份有限公司 | 文件分片方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100146003A1 (en) * | 2008-12-10 | 2010-06-10 | Unisys Corporation | Method and system for building a B-tree |
CN107657050A (zh) * | 2017-10-13 | 2018-02-02 | 北京润乾信息***技术有限公司 | 一种基于“用归并算法计算一对一join、一对多join”的对位分段并行方法 |
CN107704587A (zh) * | 2017-10-10 | 2018-02-16 | 北京润乾信息***技术有限公司 | 一种用归并算法计算一对一join、一对多join的方法 |
-
2018
- 2018-07-13 CN CN201810772324.5A patent/CN109033295B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100146003A1 (en) * | 2008-12-10 | 2010-06-10 | Unisys Corporation | Method and system for building a B-tree |
CN107704587A (zh) * | 2017-10-10 | 2018-02-16 | 北京润乾信息***技术有限公司 | 一种用归并算法计算一对一join、一对多join的方法 |
CN107657050A (zh) * | 2017-10-13 | 2018-02-02 | 北京润乾信息***技术有限公司 | 一种基于“用归并算法计算一对一join、一对多join”的对位分段并行方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110505276A (zh) * | 2019-07-17 | 2019-11-26 | 北京三快在线科技有限公司 | 对象匹配方法、装置及***、电子设备及存储介质 |
CN111198847A (zh) * | 2019-12-30 | 2020-05-26 | 广东奡风科技股份有限公司 | 一种适用于大数据集的数据并行处理方法、装置及*** |
CN111611243A (zh) * | 2020-05-13 | 2020-09-01 | 第四范式(北京)技术有限公司 | 数据处理方法及装置 |
CN111611243B (zh) * | 2020-05-13 | 2023-06-13 | 第四范式(北京)技术有限公司 | 数据处理方法及装置 |
CN112732650A (zh) * | 2020-12-31 | 2021-04-30 | 中国工商银行股份有限公司 | 文件分片方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109033295B (zh) | 2021-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109033295A (zh) | 超大数据集的合并方法及装置 | |
US10452691B2 (en) | Method and apparatus for generating search results using inverted index | |
US8719237B2 (en) | Method and apparatus for deleting duplicate data | |
US10579661B2 (en) | System and method for machine learning and classifying data | |
US9507821B2 (en) | Mail indexing and searching using hierarchical caches | |
US11074242B2 (en) | Bulk data insertion in analytical databases | |
US9529849B2 (en) | Online hash based optimizer statistics gathering in a database | |
US10915534B2 (en) | Extreme value computation | |
CN111797096A (zh) | 基于ElasticSearch的数据索引方法、装置、计算机设备及存储介质 | |
WO2018036549A1 (zh) | 分布式数据库查询方法、装置及管理*** | |
CN112800095A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN103176754A (zh) | 一种海量小文件读取存储方法 | |
CN113297250A (zh) | 一种分布式数据库多表关联查询的方法及*** | |
CN116955361A (zh) | 存储器内密钥范围搜索方法和*** | |
CN107193754B (zh) | 进行数据存储用于搜索的方法及设备 | |
CN117033424A (zh) | 慢sql语句的查询优化方法、装置和计算机设备 | |
CN112445776B (zh) | 基于Presto的动态分桶方法、***、设备及可读存储介质 | |
CN110737633B (zh) | 一种基于云管平台的资源管理方法及*** | |
Beedkar et al. | Closing the gap: Sequence mining at scale | |
CN104794237A (zh) | 网页信息处理方法及装置 | |
CN104750846A (zh) | 一种子串查找方法及装置 | |
CN103891244B (zh) | 一种进行数据存储和检索的方法及装置 | |
KR101299555B1 (ko) | 해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법 | |
CN110489601A (zh) | 一种基于缓存机制的实时数据索引快速动态更新方法 | |
Albers et al. | Quantifying competitiveness in paging with locality of reference |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |