CN114372097B - 一种数据集列序列化的高效连接比对实现方法及装置 - Google Patents
一种数据集列序列化的高效连接比对实现方法及装置 Download PDFInfo
- Publication number
- CN114372097B CN114372097B CN202111660530.5A CN202111660530A CN114372097B CN 114372097 B CN114372097 B CN 114372097B CN 202111660530 A CN202111660530 A CN 202111660530A CN 114372097 B CN114372097 B CN 114372097B
- Authority
- CN
- China
- Prior art keywords
- data set
- column
- connection
- columns
- data
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据集列序列化的高效连接比对实现方法及装置。其中方法包括根据数据集A和数据集B的变量,挑出数据集A和数据集B的连接列;对数据集A包含的各连接列合并,以及各非连接列合并得到数据集A′;对数据集B包含的各连接列合并,以及各非连接列合并得到数据集B′;比对数据集A′与数据集B′连接列,根据比对结果,将数据集A′和数据集B′合并为数据集C;根据非连接列数据来源,对数据集C的非连接列进行排列组合,获得数据集A与数据集B的连接结果。本发明将数据集的多个变量合并成一个,使原本需要多列比对的数据,通过一列比对就能完成,缩短了比对的时间;并且,本方法不需要进行对象的排序,减少了排序的性能开销。
Description
技术领域
本发明涉及数据库技术领域,特别是涉及一种数据集列序列化的高效连接比对实现方法及装置。
背景技术
连接是数据集之间进行交互最常见的操作,两个数据集进行关联计算时(如多表查询、增量比对、数据集的聚合等),首先要进行数据集的连接,而连接的本质实际是排序、分组、合并的过程,而如何提升数据集之间连接的效率对于两个数据集进行关联计算至关重要。
以传统ETL(Extract-Transform-Load数据仓库技术)中的连接为例,先要对整个数据集进行排序,然后轮询两个数据集数据,进行数据间的比对。当数据集数据量比较小时,这种方式不存在问题,当数据量很大时,单纯排序就会花费大量的性能开销,使得效率大大的降低。
在实际生产中,常用的数据集连接有三种做法,具体为:
数据集连接做法之一:先将数据集A、B分别以连接列进行排序(同为升序或降序)。以升序为例,将排序好的数据集A和B依次放入队列中,并轮询比较A和B的连接列,如果相同,则分为一组,如果连接列A>B,继续轮询B,如果连接列A<B,则继续轮询A。此种方式可匹配出连接列相同的数据,分组后进行后续的处理。在此过程中,需要进行数据集A、B的排序,当数据量很大时,效率通常会很低,不利于生产。
数据集连接做法之二:利用传统的Map Reduce方法进行数据集连接操作,而Reduce端连接比Map端连接更为普遍。在Map阶段,把所有数据标记为<key,value>的形式,其中key为连接列,value为去掉连接列的其它列(可以称为非连接列),为了区分相同的key值对应的value的输入来源,value数组的第一列用来标识来源。在reduce阶段,把每一个key值对应的value集合,根据value的来源拆分为A和B两个部分,遍历A和B组合,得到连接结果。利用做法二获取连接结果的过程中,数据集A、B的连接列中的变量若为多个时,需要逐一变量内的对象进行比对,并且在进行对象间的比对过程中,需要将对象存储起来,再进行比对。存储过程中不仅存储了对象的信息,而且还会存储对象的附属信息,当对象的数据量很大时,会极大的占用系统内存,在进行比较和传输过程中会产生一定的性能耗损。
数据集连接做法之三:使用Flink提供的join算子或者coGroup算子,可以对数据集进行联合分组,其底层仍是Map Reduce的方式,先合并两个数据集,然后根据连接列进行分组,最后将同组内的数据根据来源分到不同的List中。此过程虽然利用了数据建模的方法,然而并没有脱离传统Map Reduce的做法,相应的弊端在此做法中同样存在。
鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。
发明内容
本发明要解决的技术问题是在传统数据集之间进行连接合并时,因变量多造成逐一比对缓慢,效率低下以及序列化过程中存储带来的性能上的消耗问题。
本发明采用如下技术方案:
第一方面,本发明提供了一种数据集列序列化的高效连接比对实现方法,包括:
根据数据集A和数据集B的变量,挑选出数据集A和数据集B的连接列;
对数据集A包含的各个连接列进行合并,以及各个非连接列进行合并,得到新的数据集A′;对数据集B包含的各个连接列进行合并,以及各个非连接列进行合并,得到新的数据集B′;
比对数据集A′与数据集B′的连接列,根据比对的结果,将数据集A′和数据集B′进行合并为数据集C;
根据数据集C非连接列的数据来源,获取数据集C非连接列不同数据来源的有序对,得到数据集A与数据集B的连接结果。
优选的,所述数据集A和数据集B的连接列为数据集A与数据集B具有相同变量的列,并且,所述数据集A和数据集B相同的变量可以为一个或多个。
优选的,所述数据集A合并得到数据集A′,以及数据集B合并得到数据集B′的过程仅为单元格的合并,合并后保留原有对象的排列方式,合并后的数据集A′和数据集B′都只包含一列连接列和一列非连接列。
优选的,所述比对数据集A′与数据集B′的连接列,还包括比对数据集A′和数据集B′序列化后的key值数组,具体为:
分别对数据集A′和数据集B′进行序列化,将连接列转换为key值数组;
比对数据集A′和数据集B′序列化后的key值数组,得出比对结果。
优选的,所述分别对所述数据集A′和数据集B′的进行序列化具体包括:
对数据集A′的连接列进行序列化,将数据集A′的连接列转换为key值数组;
对数据集B′的连接列进行序列化,将数据集B′的连接列转换为key值数组。
优选的,所述根据比对的结果,将数据集A′和数据集B′进行合并为数据集C,具体合并规则为:
根据数据集A′和数据集B′连接列序列化后的结果,挑出相同的key值行,先将相同key值合并在一起,再将相同key值对应非连接列的对象合并在一起,并且,非连接列合并仅仅将单元格进行合并,保留原有的key值;
保留key值不相同的行数据。
优选的,所述获取数据集C非连接列不同数据来源的有序对的具体步骤包括:
挑出数据集C非连接列内同时含有数据集A和数据集B数据的的对象;
根据数据数据集C的非连接列来源将挑出的对象拆分为ListA和ListB,其中,ListA表示来源于数据集A中的数据,ListB表示来源于数据集B中的数据;
对拆分后的ListA和ListB进行排列组合,获取数据集C非连接列不同数据来源的有序对;
将有序对和数据集C其余的非连接列对象排成一列,组成新的非连接列。
优选的,通过在数据集A和数据集B的非连接列的第一列设置来源标识,实现对数据集C的非连接列来源的追溯。
优选的,所述数据集A与数据集B的连接结果为:所述新的非连接列和数据集C的连接列组成的一个新的数据集。
第二方面,本发明还提供了一种数据集列序列化的高效连接比对实现装置,用于实现第一方面所述的数据集列序列化的高效连接比对实现方法,所述装置包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行第一方面所述的数据集列序列化的高效连接比对实现方法。
第三方面,本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成第一方面所述的数据集列序列化的高效连接比对实现方法。
本发明解决了上述问题,当两个数据集连接列中变量为多个时,本发明将连接列中的变量合并在一起,使得原本多列的连接列变为一列,并且将合并后的连接列采用自定义字节序列化的方法,只对对象的值进行序列化。在进行数据比对时,连接列只有一列,使得原本需要进行多列(一个变量对应一列)逐一比对的数据,通过一列的比对就能完成,极大的缩短了比对的时间;与此同时,通过对对象的值进行序列化,减少了传统序列化的字节数据冗余字节太多以及一些对象的附属信息在序列化中存储所带来的性能上的损耗,提高了数据集之间连接的性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种数据集列序列化的高效连接比对实现方法流程示意图;
图2是本发明实施例提供的数据集示例图;
图3是本发明实施例提供的两个不同数据集之间的比较示例图;
图4是本发明实施例提供一种数据集列序列化的高效连接比对实现方法的数据集A的合并示意图;
图5是本发明实施例提供的一种数据集列序列化的高效连接比对实现方法流程示意图;
图6是本发明实施例提供的一种数据集列序列化的高效连接比对实现方法流程示意图;
图7是本发明实施例提供的一种数据集列序列化的高效连接比对实现方法流程示意图;
图8是本发明实施例提供的一种数据集列序列化的高效连接比对实现方法流程示意图;
图9是本发明实施例提供的一种数据集列序列化的高效连接比对实现方法不同数据集合并示意图;
图10是本发明实施例提供的一种数据集列序列化的高效连接比对实现方法流程示意图;
图11是本发明实施例提供的两个列的排列组合过程示意图;
图12是本发明实施例提供的一种数据集列序列化的高效连接比对实现方法的合并示意简图;
图13是本发明实施例提供的一种数据集列序列化的高效连接比对实现方法流程示意图;
图14是本发明实施例提供的一种数据集列序列化的高效连接比对实现方法流程示意图;
图15是本发明实施例提供的一种数据集列序列化的高效连接比对实现装置结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明的描述中,术语“内”、“外”、“纵向”、“横向”、“上”、“下”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不应当理解为对本发明的限制。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1:
本发明实施例1提供了一种数据集列序列化的高效连接比对实现方法,如图1所示,具有步骤如下:
步骤101:根据数据集A和数据集B的变量,挑选出数据集A和数据集B的连接列。
本发明实施例中的数据集为一个数据的集合,由一个或多个行,以及一个或多个行列组成,每一列的类型称为变量(或属性)。如图2所示,表示一个数据集,其中数据集内的姓名、身高、体重分别表示三个不同的变量。当两个数据集进行连接、组合或比对操作时,首先根据两个数据集相同的变量挑选出两个数据集的连接列,其中连接列为两个数据集相同变量下的列数据,要完成两个数据集之间的连接,必须满足两个数据集具有相同变量的列最少为一列的条件,其中,两个数据集相同变量的列称为连接列,连接列内变量相同,数据或对象可以不同,如图3所示,数据集1和数据集2之间具有相同的变量为姓名和身高,此时数据集1与数据集2之间的连接列为姓名和身高变量下的列,此时,数据集1和数据集2具有相同变量的列有两列,并且可以看出连接列内的对象(或数据)可以不一样,如:数据集1中的张三在数据集2内没有出现过。在本发明实施例中,两个数据集连接列以外的列称为非连接列,如图3所示,数据集1变量为体重的列表示数据集1的非连接列,数据集2变量为年龄的列表示数据集2的非连接列。通常情况下在步骤101挑选出连接列以后,会分别对数据集A和数据集B的非连接列的第一列进行标记,此标记为后面进行为后面获得数据集A与数据集B的连接结果做准备。
步骤102:对数据集A包含的各个连接列进行合并,以及各个非连接列进行合并,得到新的数据集A′;对数据集B包含的各个连接列进行合并,以及各个非连接列进行合并,得到新的数据集B′。
其中,数据集A和数据集B进行的操作是相同的,在前面步骤已经挑选出数据集A和数据集B的连接列和非连接列。对于此合并过程借助图3进行说明,假设数据集A对应图3中的数据集1,相应的数据集B对应图3中的数据集2,此时相同变量为姓名和身高,对于数据集A而言,将数据集A内的姓名和身高两列合并为一列,此时一列的变量为姓名身高(可以理解为姓名和身高原本两个变量捆绑在了一起,变成了一个变量),数据集A内的非连接列只有一列,进行保留(若非连接列含有多列,也将非连接列的多个变量按照前面连接列的处理的方式捆绑成一个变量);对于数据集B连接列和非连接列同样采取与数据集A一样方式进行处理,最终得到的数据集A′含有一列连接列和一列非连接列,数据集B也同样含有一列连接列和一列非连接列。值的说明的是,分别对数据集A和数据集B的连接列以及非连接列进行合并过程仅为单元格的合并,如图4所示,表示数据集A(此时,数据集A仍对应图3中的数据集1)的合并过程,合并后保留原有对象的排列方式,相应的合并规则可以进一步细化,如图5所示,具体为:
步骤1021:将数据集A的连接列合并为一列,合并后连接列的每个对象包含合并前同行连接列的所有对象;
步骤1022:将数据集A的非连接列合并为一列,合并后非连接列的每个对象包含合并前同行非连接列的所有对象;
步骤1023:将数据集B的连接列合并为一列,合并后连接列的每个对象包含合并前同行连接列的所有对象;
步骤1024:将数据集B的非连接列合并为一列,合并后非连接列的每个对象包含合并前同行非连接列的所有对象。
本发明实施例中的步骤1021-1024之间没有严格的先后顺序,为了将本发明合并后的结果清晰的展现,在此细化了相关步骤,其中步骤1021的结果为组成数据集A′的连接列,步骤1022为组成数据集A′的非连接列;步骤1023的结果为组成数据集A′的连接列,步骤1024为组成数据集A′的非连接列。在步骤102中,对于连接列与非连接列进行的合并操作是各自数据集内的操作,也就是说对数据集A的连接列之间进行合并,然后非连接列之间也进行合并,合并后组合起来就得到了新的数据集A′;然后利用相同的方法处理数据集B得到新的数据集B′。在此过程中,数据集A和数据集B之间并没有发生交互作用,仅仅只是分别处理两个数据集,为后面连接列的序列化做准备。
步骤103:比对数据集A′与数据集B′的连接列,根据比对的结果,将数据集A′和数据集B′进行合并为数据集C。
其中,在本发明实施例分别处理数据集A和数据集B的连接列,使得数据集A与数据集B分别只含有一列连接列,并且,各自连接列所含的变量相同。进行连接列中各对象之间的比对,能挑选出连接列中相同的对象。通过将数据集A′和数据集B′连接列中相同的对象进行合并,同时也对非连接列中数据进行合并,并保留数据集A′与数据集B′所有的不相同的连接列对象。此时,数据集C的连接列由数据集A′与数据集B′相同的对象数据、数据集A′连接列不相同的对象数据、数据集B′连接列不相同的对象数据三个部分数据组成;相应的数据集C的非连接列由合并后的非连接列、数据集A′连接列不相同的对象对应的非连接列数据、数据集B′连接列不相同的对象对应的非连接列数据三个部分数据组成。
步骤104:根据数据集C非连接列的数据来源,获取数据集C非连接列不同数据来源的有序对,得到数据集A与数据集B的连接结果。。
其中,连接列是数据集A与数据集B的连接纽带,前面对数据集A和数据集B的处理步骤已经得到了两个数据集的连接列,要得到数据集A和数据集B完整的连接结果,需要对数据集C的非连接列进行处理。此时,可以通过对数据集A非连接列和数据集B非连接列的第一列分别设置来源标记,在进行后续处理的步骤中,一直沿用来源标识对中间步骤得到的数据集进行标记,使得在最后处理数据集C时,可以轻易的甄选出数据集C的非连接列的数据来源,再对不同数据来源的非连接列对象进行排列组合,进而得到数据集C的非连接列,再将数据集C的连接列与非连接列对象进行对应(同列的连接列对象与同列的非连接列对象相对应),得到数据集A与数据集B的连接结果。
本发明相较传统的连接方式将数据集连接前会先对两个数据集进行合并处理,将每个数据集各自原本多列(也可能为一列)的连接列和非连接列合并处理成只有一列连接列和一列非连接列组成的数据集。比对过程始终比对连接列,使得原本需要对多个变量(每个变量对应一列,并且,有多少列就需要比对多少列)进行比对变为只需要进行一个变量的比对,极大的节省了比对的时间;与此同时,本方法在比对的过程中,不需要进行对象的排序,减少了传统方法因排序造成的性能开销。
为了优化本发明方案,在本发明实施例优选的所述比对数据集A′与数据集B′的连接列,还包括比对数据集A′和数据集B′序列化后的key值数组,如图6所示,具体为:
步骤201:分别对数据集A′和数据集B′进行序列化,将连接列转换为key值数组;
步骤202:比对数据集A′和数据集B′序列化后的key值数组,得出比对结果。
其中,步骤201为数据集A′和数据集B′序列化步骤,是将数据集A′和数据集B′中连接列转换为key值数组的过程,如图7所示,相应序列化的具体步骤包括:
步骤2011:对数据集A′进行序列化,将数据集A′的连接列转换为key值数组。
步骤2012:对数据集B′进行序列化,将数据集B′的连接列转换为key值数组。
数据集A′和数据集B′都是含有一列连接列和一列非连接列的数据集。在数据集进行连接或合并时,通常只关注连接列,此时会对数据集的各自连接列进行序列化。序列化的实质是将数据集内的对象转换为key值的过程,在此过程并未对非连接列做任何操作,并且,此过程在数据集内部进行操作,并没有数据集之间的交互操作。
进一步的,对步骤103的合并过程可以进一步细化,根据比对的结果,将数据集A′和数据集B′进行合并为数据集C,如图8所示,合并规则具体细化为:
步骤1031:根据数据集A′和数据集B′连接列序列化后的结果,挑出相同的key值行,先将相同key值合并在一起,再将相同key值对应非连接列的对象合并在一起,并且,非连接列合并仅仅将单元格进行合并,保留原有的key值。
步骤1032:保留key值不相同的行数据。
比对过程在数据集之间进行,通过数据集A″和数据集B″的key值数组的每行字节值进行比对,直到数据集A′和数据集B′比对完为止,将key数组值完全一样的行合并为一行。如图9所示,表示步骤1031的合并示例,在实际操作过程中,一般先将数据集A″和数据集B″相同key值数组的列进行合并为一列,然后将相同key值组对应的非连接列按照数据来源进行合并,合并只是仅仅将非连接列的单元格合并,将对象放在一起,并没有进行对象间的操作。此过程主要体现数据的比对过程,将复杂的对象数据(如:汉字、字节或其它类型数据)转换为简单统一的字节数据,使得比对过程相对简单,极大的提高了比对的效率。
在实际操作过程中,开始的数据集的连接列为对象数据,为了保证数据输入和输出的对象类型的一致性,在获取连接结果时,同样应该得对象变量的连接列进行输出。通常会对数据集序列化后的结果进行反序列化,将key值数组转换为连接列对象再输出。
本发明步骤104获取数据集C非连接列不同数据来源的有序对的过程可以进一步细化,如图10所示,具体细化步骤包括:
步骤1041:挑出数据集C非连接列内同时含有数据集A和数据集B数据的的对象。
步骤1042:根据数据数据集C的非连接列来源将挑出的对象拆分为ListA和ListB,其中,ListA表示来源于数据集A中的数据,ListB表示来源于数据集B中的数据。
步骤1043:对拆分后的ListA和ListB进行排列组合,获取数据集C非连接列不同数据来源的有序对。
步骤1044:将有序对和数据集C其余的非连接列对象排成一列,组成新的非连接列。
其中,为了便于拆分数据集C的非连接列,通常会分别对步骤101中的数据集A和数据集B的非连接进行标记。通过通过在数据集A和数据集B的非连接列的第一列设置来源标识,可以实现对数据集C的非连接列来源的追溯。
为了进一步的解释步骤1043对拆分后的ListA和ListB进行排列组合,获取不同数据来源的有序对过程,下面用具体例子进行说明。如图11所示,表示两个列的排列组合过程,每个列选取一个对象进行组合,将所有组合的都组成一列进行输出。对于本发明两个数据集相同的连接列对象,在进行合并时,将相同的连接了合并在一起,然后非连接列之间也进行了合并,如图12所示,其中,D1为相同的连接列对象,进行合并时,相同的合并一起,非连接列也进行了合并,合并后的非连接列对象为F1F2。
实施例2:
本发明实施例是在实施例1的基础上对本发明方法的具体场景做进一步阐述。本发明实施例利用Map Reduce方法实现,Map Reduce任务过程分为Map阶段和Reduce阶段,每个阶段都是以键-值对作为输入和输出的,但Map Reduce方法仅仅只是实现本发明的一种方法手段。相比较传统的Map Reduce方法,本发明做了进一步的改进,使得原本需要进行比对多个变量的列完成的工作量,变为只需要比对一列就可以完成数据的比对,并省去了传统方法排序比对造成时间长,效率低的问题。下面利用图示流程进一步的说明本发明方法,如图13,表示Map Reduce方法实现本发明的流程图,其中,为了表示非连接列可以为多列,特对图中数据集非连接列的b和c列都做了标记。具体流程步骤如下:
步骤301:对数据集A和B进行Map处理,得到连接列key值数组和非连接列value数组,并在非连接列value数组的第一列加上来源标识。
步骤302:分别对数据集A和B的key值数组进行序列化,然后将数据集A和B合并,并对合并后的非连接列进行分组。
步骤303:利用key值反序列化,将合并后的key值数组转换为连接列。
步骤304:根据数据集同组非连接列value数组的数据来源将其拆分为ListA和ListB,对ListA和ListB进行排列组合,得到数据集A和数据集B的连接结果。
本发明实施例的步骤201、步骤204分别为Map Reduce方法的Map阶段和Reduce阶段,如图14所示,表示利用对两个数据集连接过程的方法图示,图中为了展现变化的过程,将所有的列的名称都用key或value命名。首先,对两个数据集进行map处理,通过map函数,可以将两个数据集的key列(连接列)和value列(非连接列)挑出,然后对数据集的key列进行序列化,将key列转换为key值数组列;比对这两个数据集转换后的key值,将相同的key值进行合并,并根据来源(步骤201中设置的来源标识可以判断value列中各数据的来源)将value列拆分为ListA和ListB,其中,ListA来源于数据集A的数据,ListB来源于数据集B的数据;利用反序列化将key值数组列转换为key列,再对非连接列进行排列组合操作,得到非连接列不同数据来源的有序对,进而得到数据集A与数据集B的连接的结果。
本实施例相比较传统的Map Reduce方法而言,会在Map阶段对含有多列的连接列和非连接列分别进行合并,将原有的数据集转换为含有一列连接列和一列非连接列的数据集,通过序列化以及反序列化的过程,数据集的列数始终没有发生变化。在进行数据比对合并的过程中,只需要一列的比对(传统方法有多少列连接列就要比对多少列)就能将连接列相同的数据挑选出来,并且在序列化的过程中,可以通过自定义的字节序列化方法,只对对象的值进行序列化来避免原生的序列化的字节数组冗余字节太多的同时,也对一些对象附属信息也进行了序列化造成比较和传输过程中的性能损耗。除此之外,本发明实施例所有的过程并没有对数据集内的数据进行排序,避免了对数据集排序造成的性能开销。
实施例3:
如图15所示,是本发明实施例的一种数据集列序列化的高效连接比对实现装置的架构示意图。本实施例的数据集列序列化的高效连接比对实现装置包括一个或多个处理器21以及存储器22。其中,图14中以一个处理器21为例。
处理器21和存储器22可以通过总线或者其他方式连接,图14中以通过总线连接为例。
存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序和非易失性计算机可执行程序,如实施例1中的数据集列序列化的高效连接比对实现方法。处理器21通过运行存储在存储器22中的非易失性软件程序和指令,从而执行数据集列序列化的高效连接比对实现方法。
存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1中的数据集列序列化的高效连接比对实现方法,例如,执行以上描述的图1-13所示的各个步骤。
值得说明的是,上述装置和系统内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的处理方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种数据集列序列化的高效连接比对实现方法,其特征在于,包括:
根据数据集A和数据集B的变量,挑选出数据集A和数据集B的连接列;
将数据集A包含的各个连接列合并为一列,以及各个非连接列合并为一列,得到新的数据集A′;将数据集B包含的各个连接列合并为一列,以及各个非连接列合并一列,得到新的数据集B′,其中,所述数据集A合并得到数据集A′,以及数据集B合并得到数据集B′的合并过程仅为单元格的合并,合并后保留原有对象的排列方式,合并后的数据集A′和数据集B′都只包含一列连接列和一列非连接列;
分别对数据集A′和数据集B的连接列进行序列化,比对数据集A′与数据集B′序列化后的结果,并根据比对的结果将数据集A′和数据集B′进行合并为数据集C;
根据数据集C非连接列的数据来源,获取数据集C非连接列不同数据来源的有序对,得到数据集A与数据集B的连接结果。
2.根据权利要求1所述的数据集列序列化的高效连接比对实现方法,其特征在于,所述数据集A和数据集B的连接列为数据集A与数据集B具有相同变量的列,并且,所述数据集A和数据集B相同的变量可以为一个或多个。
3.根据权利要求1所述的数据集列序列化的高效连接比对实现方法,其特征在于,所述分别对数据集A′和数据集B的连接列进行序列化,比对数据集A′与数据集B′序列化后的结果,具体为:
分别对数据集A′的连接列和数据集B′的连接列进行序列化,将连接列转换为key值数组;
比对数据集A′和数据集B′序列化后的key值数组,得出比对结果。
4.根据权利要求3所述的数据集列序列化的高效连接比对实现方法,其特征在于,所述根据比对的结果,将数据集A′和数据集B′进行合并为数据集C,具体合并规则为:
根据数据集A′和数据集B′连接列序列化后的结果,挑出相同的key值行,先将相同key值合并在一起,再将相同key值对应非连接列的对象合并在一起,并且,非连接列合并仅仅将单元格进行合并,保留原有的key值;
保留key值不相同的行数据。
5.根据权利要求1所述的数据集列序列化的高效连接比对实现方法,其特征在于,所述获取数据集C非连接列不同数据来源的有序对的具体步骤包括:
挑出数据集C非连接列内同时含有数据集A和数据集B数据的对象;
根据数据集C的非连接列来源将挑出的对象拆分为ListA和ListB,其中,ListA表示来源于数据集A中的数据,ListB表示来源于数据集B中的数据;
对拆分后的ListA和ListB进行排列组合,获取数据集C非连接列不同数据来源的有序对;
将有序对和数据集C其余的非连接列对象排成一列,组成新的非连接列。
6.根据权利要求5所述的数据集列序列化的高效连接比对实现方法,其特征在于,通过在数据集A和数据集B的非连接列的第一列设置来源标识,实现对数据集C的非连接列来源的追溯。
7.根据权利要求6所述的数据集列序列化的高效连接比对实现方法,其特征在于,所述数据集A与数据集B的连接结果为:所述新的非连接列和数据集C的连接列组成的一个新的数据集。
8.一种数据集列序列化的高效连接比对实现装置,其特征在于,包括:
至少一个处理器;
至少一个存储器;
其中,所述至少一个处理器以及所述至少一个存储器相互通信连接,所述至少一个存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7任一项权利要求所提供的数据集列序列化的高效连接比对实现方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111660530.5A CN114372097B (zh) | 2021-12-30 | 2021-12-30 | 一种数据集列序列化的高效连接比对实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111660530.5A CN114372097B (zh) | 2021-12-30 | 2021-12-30 | 一种数据集列序列化的高效连接比对实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114372097A CN114372097A (zh) | 2022-04-19 |
CN114372097B true CN114372097B (zh) | 2022-11-22 |
Family
ID=81142540
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111660530.5A Active CN114372097B (zh) | 2021-12-30 | 2021-12-30 | 一种数据集列序列化的高效连接比对实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114372097B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023230943A1 (en) * | 2022-06-01 | 2023-12-07 | Huawei Technologies Co., Ltd. | System and method of data management |
CN117976567B (zh) * | 2024-04-01 | 2024-06-18 | 华羿微电子股份有限公司 | 一种双芯连划map取片产品的加工方法及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9292571B1 (en) * | 2013-01-18 | 2016-03-22 | Microstrategy Incorporated | Joining database tables |
CN106933919A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 数据表的连接方法及装置 |
CN106933933A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 数据表信息的处理方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106897385A (zh) * | 2017-01-23 | 2017-06-27 | 武汉迎风聚智科技有限公司 | 一种基于关联矩阵的不确定数据连接合并算法 |
CN112085644B (zh) * | 2019-06-12 | 2024-05-14 | 上海赜睿信息科技有限公司 | 多列数据排序方法、装置、可读存储介质和电子设备 |
-
2021
- 2021-12-30 CN CN202111660530.5A patent/CN114372097B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9292571B1 (en) * | 2013-01-18 | 2016-03-22 | Microstrategy Incorporated | Joining database tables |
CN106933919A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 数据表的连接方法及装置 |
CN106933933A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 数据表信息的处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
合并汇总大量数据表的一般方法;李森;《电脑知识与技术》;20191125;第15卷(第33期);257-260 * |
Also Published As
Publication number | Publication date |
---|---|
CN114372097A (zh) | 2022-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114372097B (zh) | 一种数据集列序列化的高效连接比对实现方法及装置 | |
US10831773B2 (en) | Method and system for parallelization of ingestion of large data sets | |
US7103596B2 (en) | Data sort method, data sort apparatus, and data sort program | |
CN111190904B (zh) | 一种图-关系数据库混合存储的方法和装置 | |
CN105447174A (zh) | 一种报表生成方法及装置 | |
CN104731922A (zh) | 基于分布式数据库HBase的结构化数据的快速检索系统及方法 | |
CN108446313B (zh) | 一种数据格式转换方法和装置 | |
CN111506621A (zh) | 一种数据统计方法及装置 | |
CN114491172B (zh) | 树形结构节点的快速检索方法、装置、设备及存储介质 | |
CN103678550A (zh) | 一种基于动态索引结构的海量数据实时查询方法 | |
CN111324577A (zh) | 一种Yml文件读写的方法及装置 | |
CN108170535A (zh) | 一种基于MapReduce模型的提升表连接效率的方法 | |
CN104881475A (zh) | 一种用于大数据随机抽样的方法和系统 | |
CN103064991A (zh) | 一种海量数据聚类方法 | |
CN103475905A (zh) | 云环境下基于网络连接复用的影像数据块高效传输方法 | |
CN105005621A (zh) | 一种大数据分布式存储及并行索引系统的构建方法 | |
CN107506394A (zh) | 一种消除大数据规范关系连接冗余的优化方法 | |
CN108027835B (zh) | 用于管理主数据库和副本数据库的存储的装置和方法 | |
CN109241058A (zh) | 一种向b+树批量插入键值对的方法和装置 | |
CN111752954A (zh) | 一种大规模特征数据存储的方法及装置 | |
CN103853796B (zh) | 数据插入方法和装置 | |
CN111737341B (zh) | 基于日志解析的插入操作同步优化方法和数据同步系统 | |
CN118444855A (zh) | 一种多层信息要素动态存储方法和装置 | |
CN116882366B (zh) | 标记型报文的结构转换方法、装置、电子产品和介质 | |
US8849866B2 (en) | Method and computer program product for creating ordered data structure |
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 |