一种数据集列序列化的高效连接比对实现方法及装置制造方法及图纸

技术编号:33149949 阅读:10 留言:0更新日期:2022-04-22 14:03
本发明专利技术公开了一种数据集列序列化的高效连接比对实现方法及装置。其中方法包括根据数据集A和数据集B的变量,挑出数据集A和数据集B的连接列;对数据集A包含的各连接列合并,以及各非连接列合并得到数据集A

【技术实现步骤摘要】
一种数据集列序列化的高效连接比对实现方法及装置


[0001]本专利技术涉及数据库
,特别是涉及一种数据集列序列化的高效连接比对实现方法及装置。

技术介绍

[0002]连接是数据集之间进行交互最常见的操作,两个数据集进行关联计算时(如多表查询、增量比对、数据集的聚合等),首先要进行数据集的连接,而连接的本质实际是排序、分组、合并的过程,而如何提升数据集之间连接的效率对于两个数据集进行关联计算至关重要。
[0003]以传统ETL(Extract

Transform

Load数据仓库技术)中的连接为例,先要对整个数据集进行排序,然后轮询两个数据集数据,进行数据间的比对。当数据集数据量比较小时,这种方式不存在问题,当数据量很大时,单纯排序就会花费大量的性能开销,使得效率大大的降低。
[0004]在实际生产中,常用的数据集连接有三种做法,具体为:
[0005]数据集连接做法之一:先将数据集A、B分别以连接列进行排序(同为升序或降序)。以升序为例,将排序好的数据集A和B依次放入队列中,并轮询比较A和B的连接列,如果相同,则分为一组,如果连接列A>B,继续轮询B,如果连接列A<B,则继续轮询A。此种方式可匹配出连接列相同的数据,分组后进行后续的处理。在此过程中,需要进行数据集A、B的排序,当数据量很大时,效率通常会很低,不利于生产。
[0006]数据集连接做法之二:利用传统的Map Reduce方法进行数据集连接操作,而Reduce端连接比Map端连接更为普遍。在Map阶段,把所有数据标记为<key,value>的形式,其中key为连接列,value为去掉连接列的其它列(可以称为非连接列),为了区分相同的key值对应的value的输入来源,value数组的第一列用来标识来源。在reduce阶段,把每一个key值对应的value集合,根据value的来源拆分为A和B两个部分,遍历A和B组合,得到连接结果。利用做法二获取连接结果的过程中,数据集A、B的连接列中的变量若为多个时,需要逐一变量内的对象进行比对,并且在进行对象间的比对过程中,需要将对象存储起来,再进行比对。存储过程中不仅存储了对象的信息,而且还会存储对象的附属信息,当对象的数据量很大时,会极大的占用系统内存,在进行比较和传输过程中会产生一定的性能耗损。
[0007]数据集连接做法之三:使用Flink提供的join算子或者coGroup算子,可以对数据集进行联合分组,其底层仍是Map Reduce的方式,先合并两个数据集,然后根据连接列进行分组,最后将同组内的数据根据来源分到不同的List中。此过程虽然利用了数据建模的方法,然而并没有脱离传统Map Reduce的做法,相应的弊端在此做法中同样存在。
[0008]鉴于此,克服该现有技术所存在的缺陷是本
亟待解决的问题。

技术实现思路

[0009]本专利技术要解决的技术问题是在传统数据集之间进行连接合并时,因变量多造成逐
一比对缓慢,效率低下以及序列化过程中存储带来的性能上的消耗问题。
[0010]本专利技术采用如下技术方案:
[0011]第一方面,本专利技术提供了一种数据集列序列化的高效连接比对实现方法,包括:
[0012]根据数据集A和数据集B的变量,挑选出数据集A和数据集B的连接列;
[0013]对数据集A包含的各个连接列进行合并,以及各个非连接列进行合并,得到新的数据集A

;对数据集B包含的各个连接列进行合并,以及各个非连接列进行合并,得到新的数据集B


[0014]比对数据集A

与数据集B

的连接列,根据比对的结果,将数据集A

和数据集B

进行合并为数据集C;
[0015]根据数据集C非连接列的数据来源,获取数据集C非连接列不同数据来源的有序对,得到数据集A与数据集B的连接结果。
[0016]优选的,所述数据集A和数据集B的连接列为数据集A与数据集B具有相同变量的列,并且,所述数据集A和数据集B相同的变量可以为一个或多个。
[0017]优选的,所述数据集A合并得到数据集A

,以及数据集B合并得到数据集B

的过程仅为单元格的合并,合并后保留原有对象的排列方式,合并后的数据集A

和数据集B

都只包含一列连接列和一列非连接列。
[0018]优选的,所述比对数据集A

与数据集B

的连接列,还包括比对数据集A

和数据集B

序列化后的key值数组,具体为:
[0019]分别对数据集A

和数据集B

进行序列化,将连接列转换为key值数组;
[0020]比对数据集A

和数据集B

序列化后的key值数组,得出比对结果。
[0021]优选的,所述分别对所述数据集A

和数据集B

的进行序列化具体包括:
[0022]对数据集A

的连接列进行序列化,将数据集A

的连接列转换为key值数组;
[0023]对数据集B

的连接列进行序列化,将数据集B

的连接列转换为key值数组。
[0024]优选的,所述根据比对的结果,将数据集A

和数据集B

进行合并为数据集C,具体合并规则为:
[0025]根据数据集A

和数据集B

连接列序列化后的结果,挑出相同的key值行,先将相同key值合并在一起,再将相同key值对应非连接列的对象合并在一起,并且,非连接列合并仅仅将单元格进行合并,保留原有的key值;
[0026]保留key值不相同的行数据。
[0027]优选的,所述获取数据集C非连接列不同数据来源的有序对的具体步骤包括:
[0028]挑出数据集C非连接列内同时含有数据集A和数据集B数据的的对象;
[0029]根据数据数据集C的非连接列来源将挑出的对象拆分为ListA和ListB,其中,ListA表示来源于数据集A中的数据,ListB表示来源于数据集B中的数据;
[0030]对拆分后的ListA和ListB进行排列组合,获取数据集C非连接列不同数据来源的有序对;
[0031]将有序对和数据集C其余的非连接列对象排成一列,组成新的非连接列。
[0032]优选的,通过在数据集A和数据集B的非连接列的第一列设置来源标识,实现对数据集C的非连接列来源的追溯。
[0033]优选的,所述数据集A与数据本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据集列序列化的高效连接比对实现方法,其特征在于,包括:根据数据集A和数据集B的变量,挑选出数据集A和数据集B的连接列;对数据集A包含的各个连接列进行合并,以及各个非连接列进行合并,得到新的数据集A

;对数据集B包含的各个连接列进行合并,以及各个非连接列进行合并,得到新的数据集B

;比对数据集A

与数据集B

的连接列,根据比对的结果,将数据集A

和数据集B

进行合并为数据集C;根据数据集C非连接列的数据来源,获取数据集C非连接列不同数据来源的有序对,得到数据集A与数据集B的连接结果。2.根据权利要求1所述的数据集列序列化的高效连接比对实现方法,其特征在于,所述数据集A和数据集B的连接列为数据集A与数据集B具有相同变量的列,并且,所述数据集A和数据集B相同的变量可以为一个或多个。3.根据权利要求1所述的数据集列序列化的高效连接比对实现方法,其特征在于,所述数据集A合并得到数据集A

,以及数据集B合并得到数据集B

的过程仅为单元格的合并,合并后保留原有对象的排列方式,合并后的数据集A

和数据集B

都只包含一列连接列和一列非连接列。4.根据权利要求1所述的数据集列序列化的高效连接比对实现方法,其特征在于,所述比对数据集A

与数据集B

的连接列,还包括比对数据集A

和数据集B

序列化后的key值数组,具体为:分别对数据集A

和数据集B

进行序列化,将连接列转换为key值数组;比对数据集A

和数据集B

序列化后的key值数组,得出比对结果。5.根据权利要求4所述的数据集列序列化的高效连接比对实现方法,其特征在于,所述分别对所述数据集A

和数据集B

的进行序列化具体包括:对数据集A
′...

【专利技术属性】
技术研发人员:梅纲吴鑫高东升姚艳玲
申请(专利权)人:北京达梦数据库技术有限公司
类型:发明
国别省市:

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

1