数据融合方法、装置、可读存储介质及电子设备与流程

文档序号:20264374发布日期:2020-04-03 18:11阅读:82来源:国知局
本申请涉及数据处理
技术领域
:,具体而言,涉及一种数据融合方法、装置、可读存储介质及电子设备。
背景技术
::现有技术中,在进行数据融合时,常用的一种是将数据完全读取到内存中,然后基于spark框架等进行数据融合,具体融合时通常采用的融合方式是增量融合和全量融合两种方式。增量融合是将每一个表对应的增量与其他各个表的全量数据进行融合,最终得到与各个表对应的融合数据。全量融合是通过得到各个表的全量数据,从而将各个表的全量数据完全融合为一个表。基于spark框架下的两种方式在融合过程中都需要将所有的数据存储在内存中,并同时处理大量的数据,因此这两种融合方式都存在融合效率低以及耗费内存的问题。技术实现要素:为了至少克服现有技术中的上述不足,本申请的目的之一在于提供一种数据融合方法,应用于电子设备,所述方法包括:获取预先存储的融合信息,所述融合信息包括融合目标表的第一识别信息、多个待融合表的第二识别信息,其中,所述融合目标表为可更新数据存储工具中用于存储融合后的数据的表;依次从所述多个待融合表里确定一个目标执行表;针对所述目标执行表,根据所述目标执行表的第二识别信息从原始数据库中获取待融合数据以及所述待融合数据对应的第一主键和第一字段,所述第一主键用于标识目标执行表里一条数据记录,所述第一字段用于标识目标执行表里一类数据;根据所述待融合数据对应的第一主键以及第一字段将所述待融合数据存储在所述融合目标表里。可选地,依次从所述多个待融合表里确定一个目标执行表的步骤包括:按照预先设置的执行顺序依次从所述多个待融合表里确定一个目标执行表。可选地,所述电子设备中还预先存储有最近一次融合数据时所融合数据的截止时间,该截止时间的初始值为预设时间,所述针对所述目标执行表,根据所述目标执行表的第二识别信息从原始数据库中获取待融合数据以及所述待融合数据对应的第一主键和第一字段的步骤包括:获取所述目标执行表最近一次进行数据融合时,所融合数据的截止时间;判断所述截止时间是否为预设时间;如果所述截止时间是所述预设时间,则根据所述目标执行表的第二识别信息获取所述目标执行表里所有的数据作为待融合数据,并获取每个所述待融合数据对应的第一主键和第一字段;如果所述截止时间不是所述预设时间,则从预先存储的融合信息中获取所述目标执行表对应的数据获取规则的规则识别信息;以及根据所述目标执行表的第二识别信息以及该目标执行表对应的数据获取规则从原始数据库中获取待融合数据、所述待融合数据对应的第一主键和第一字段。可选地,所述根据所述目标执行表的第二识别信息以及该目标执行表对应的数据获取规则从原始数据库中获取待融合数据、所述待融合数据对应的第一主键和第一字段的步骤包括:判断所述数据获取规则是否为获取全量数据;如果所述数据获取规则是获取全量数据,则根据所述目标执行表的第二识别信息获取所述目标执行表里所有的数据作为待融合数据,并获取每个所述待融合数据对应的第一主键和第一字段;如果所述数据获取规则不是获取全量数据,则将新产生的增量数据作为待融合数据并获取所述待融合数据对应的第一主键以及第一字段。可选地,所述融合信息存储在融合信息表里,所述融合信息表里存储有融合目标表里的第二主键以及至少一个第二字段、每个所述待融合表里的第一主键以及至少一个第一字段,所述第二主键用于标识融合目标表里的一条数据记录,所述第二字段用于标识融合目标表里的一类数据,所述方法还包括:根据第二主键以及第二字段、每个所述待融合表里的第一主键以及第一字段在所述融合信息表里的位置获得第二主键与所述第一主键的对应关系、每个第二字段与每个第一字段的对应关系;所述根据所述待融合数据对应的第一主键以及第一字段将所述待融合数据存储在所述融合目标表里的步骤包括:根据所述第一主键对应的第二主键在所述融合目标表里的位置以及所述第一字段对应的第二字段在融合目标表里的位置确定该待融合数据的存储位置。可选地,所述电子设备中还预先存储有数据校验规则,在根据所述待融合数据对应的第一主键以及第一字段将所述待融合数据存储在所述融合目标表里的步骤前,所述方法还包括:根据所述数据校验规则对所述待融合数据进行初步处理,获得新的待融合数据。本申请的另一目的在于提供一种数据融合装置,应用于电子设备,所述装置包括:第一获取模块,用于获取预先存储的融合信息,所述融合信息包括融合目标表的第一识别信息、多个待融合表的第二识别信息,其中,所述融合目标表为可更新数据存储工具中用于存储融合后的数据的表;确定模块,用于依次从所述多个待融合表里确定一个目标执行表;第二获取模块,用于针对所述目标执行表,根据所述目标执行表的第二识别信息从原始数据库中获取待融合数据以及所述待融合数据对应的第一主键和第一字段,所述第一主键用于标识目标执行表里一条数据记录,所述第一字段用于标识目标执行表里一类数据;融合模块,用于根据所述待融合数据对应的第一主键以及第一字段将所述待融合数据存储在所述融合目标表里。可选地,所述确定模块具体用于:依次从所述多个待融合表里确定一个目标执行表。本申请的另一目的在于提供一种可读存储介质,所述可读存储介质中存储有可执行程序,处理器在执行所述可执行程序时,实现本申请任一项所述的方法。本申请的另一目的在于提供一种电子设备,所述电子设备包括存储器和处理器,所述存储器与所述处理器电性连接,所述存储器中存储有可执行程序,所述处理器在执行所述可执行程序时,实现如本申请任一项所述的方法。相对于现有技术而言,本申请具有以下有益效果:本申请实施例提供的数据融合方法、装置、可读存储介质及电子设备,通过预先存储包括融合目标表的第一识别信息、多个待融合表的第二识别信息,并依次从待融合表里确定一个作为目标执行表,从而从目标执行表里获取待融合数据,并在获取待融合数据后根据待融合数据的第一主键和第一字段来将待融合数据存储至融合目标表里。由于融合目标表是可更新数据存储工具中的表,其本身能够支持数据的更新,也就是将数据替换,在将待融合数据存储进融合目标表时,能够直接在融合目标表原有数据的基础上进行数据的更新写入,在同一时间,只需要将目标执行表存储在内存中,然后根据目标执行表在融合目标表里进行数据更新,从而能够减小内存的占用。此外,本实施例所述方案只需要单独根据每个待融合表进行融合目标表的更新,不需要同时对多个待融合表的数据进行多次融合,从而能够提高数据融合的效率。附图说明为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1a-图1c分别是本申请实施例提供的表a、b、c的示意图;图2a-图2c分别是本申请实施例提供的表a、b、c对应的表增量;图3是本实施例提供的最终融合结果的示意图;图4是本申请实施例中表a、b、c的融合结果示意图;图5a-图5c分别是表a、b、c增量融合后的结果示意图;图6是表a、b、c增量融合后在hvie数据库中的存储示意图;图7a-图7c分别是表a、b、c分别与对应增量融合后的结果示意图;图8是本申请实施例提供的电子设备的结构示意框图;图9是本申请实施例提供的数据融合方法的流程示意图一;图10本申请实施例中融合信息表的示意图;图11是本申请实施例提供的数据融合方法的流程示意图二;图12是本申请实施例提供的数据融合方法的流程示意图三;图13是本申请实施例中的数据校验规则的存储示意图;图14是本申请实施例提供的数据融合装置的结构示意框图。图标:100-电子设备;110-数据融合装置;111-第一获取模块;112-确定模块;113-第二获取模块;114-融合模块;120-存储器;130-处理器。具体实施方式为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。在本申请的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。大数据融合,例如一些涉及个体信息的场景中,需要将多张表格通过相同主键融合为一张宽表,也就是说需要消除重复类型的数据,一种常用的实施方式是通过hive+spark(hive是分布式系统的一个数据仓库工具,spark为apache的一款基于内存计算的数据处理引擎)计算存储模式进行数据融合,最终将融合的数据存在hive表里。在数据融合过程中,具体的实现方式一般有增量融合和全量融合两种。增量融合是将每一个表对应的增量与其他各个表的全量数据进行融合,最终得到与各个表对应的融合数据。全量融合是通过得到各个表的全量数据,从而将各个表的全量数据完全融合为一个表。以下举例说明上述两种实施方式是如何进行数据融合的。待融合表包括图1a-图1c所示的三张表(表a、b、c);如图2a-图2c所示,a、b、c三张表各自对应的增量数据分别为a表增量、b表增量、c表增量。此时,对上述三个表表及其对应的表增量融合后的结果应该如图3所示。采用增量融合的过程如下,在只有a、b、c时,进行首次融合,并将融合结果写入hive表等数据库中,首次融合过程中,可以将首次融合的表对应的时间添加在融合的表里(例如,该批次数据处理产生的截止时间是2019年10月10日),此时,数据融合的结果如图4所示。在首次融合后的2019年10月11日,产生了增量数据a表增量、b表增量、c表增量,此时融合过程为:将a表的增量与b表全量(b表+b表增量)和c表全量中第一主键“id”为104、102的数据进行融合,融合结果如图5a所示;接着需要将b表的增量中除去a表的增量主键的部分,即第一主键“id”为101的数据与a表全量和c表全量中第一主键“id”为101的数据进行融合,此时融合结果如图5b所示;再接着将c表的增量中除去a表的增量和b表的增量主键的部分,即第一主键“id”为103的数据与a表全量和b表全量中第一主键“id”为103的数据进行融合,融合结果如图5c所示。然后再将图5a-图5c的表里的内容分别写入目标数据库,例如以追加方式写入hive数据库中,此时,hive表里的数据如图6所示。本实施例中,各个表中的符号的含义如下:“xm”为姓名对应的字段,“nl”为年龄对应的字段,“xb”为性别对应的字段,“jzcs”为居住地址对应的字段,“mz”为民族对应的字段。如果采用全量融合,则上述方式中,进行数据融合的方式为:首先对图1a-图1c所示的三张表(表a、b、c)进行融合,此时融合后的结果请参照图4所示(可以不添加更新事时间字段,即第一字段“gxsj”)。当产生增量数据后,将a与a表增量、b与b表增量、c与c表增量分别进行融合,此时得到的融合结果如图7a-图7c(a'、b'、c')所示。此时,便可以得到如图3所示的融合结果,然后将该融合结果写入目标数据库如hive中。可见,上述两种方式在融合过程中都需要将所有的数据存储在内存中,因此存在耗费内存的问题。此外这两种方式还需要同时处理大量的数据,因此这两种融合方式都存在融合效率低的问题。为了解决现有技术中,进行数据融合时存在的占用内存大和融合效率低的问题,本实施例提供了一种数据融合方案。请参见图8,图8是本申请实施例提供的电子设备100的结构示意框图,所述电子设备100包括数据融合装置110,存储器120和处理器130,存储器120和处理器130相互之间直接或间接电性连接,用于实现数据交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述数据融合装置110包括至少一个可以软件或固件(firmware)的形式存储于所述存储器120中或固化在所述电子设备100的操作系统(operatingsystem,os)中的软件功能模块。所述处理器130用于执行所述存储器120中存储的可执行模块,例如所述数据融合装置110所包括的软件功能模块及计算机程序等。本申请实施例还提供了一种应用于上述电子设备100的数据融合方法,请参照图9,所述方法包括步骤s110-步骤s140。以下结合具体的实施例来对步骤s110-步骤s140进行详细说明。步骤s110,获取预先存储的融合信息,所述融合信息包括融合目标表的第一识别信息、多个待融合表的第二识别信息,其中,所述融合目标表为可更新数据存储工具中用于存储融合后的数据的表。融合目标表是用于存储融合后的数据的表。待融合表是包括需要融合的数据的表,第一识别信息用于标识融合目标表,第二识别信息用于标识待融合表。步骤s120,依次从所述多个待融合表里确定一个目标执行表。步骤s130,从目标执行表里获取待融合数据以及融合标识信息。具体地,针对所述目标执行表,根据所述目标执行表的第二识别信息从原始数据库中获取待融合数据以及所述待融合数据对应的第一主键和第一字段,所述第一主键用于标识目标执行表里一条数据记录,所述第一字段用于标识目标执行表里一类(一种类型的)数据。其中,融合标识信息包括待融合数据对应的第一主键以及第一字段,一条数据记录中对应有多个不同类型的数据。步骤s140,根据第一主键以及第一字段存储待融合数据至融合目标表中。根据所述待融合数据对应的第一主键以及第一字段将所述待融合数据存储在所述融合目标表里。本实施例中,所述可更新数据存储工具可以是hbase数据库(分布式的、面向列的开源数据库),也可以是elasticsearch(一款开源的大数据存储搜索引擎)。在可更新数据存储工具中,可以将采用覆盖的方式进行数据更新,也就是说采用新数据代替同一类型的旧数据。本实施例采用可更新数据存储工具来存储融合目标表,在数据更新过程中,从待融合表里每次确定一个目标执行表,然后从该目标执行表里获取待融合数据进行数据融合,由于在融合过程中,充分利用可更新数据存储工具支持数据更新的特点,依次对每个待融合表分别进行处理的,因此,在同一时间,只需要将一个待融合表存储在内存中,能够避免内存占用过多的问题。同时,也并不需要对多个待融合表进行计算,因此,能够避免数据融合过程中计算的数据量过多的问题,从而提高数据融合的效率。需要说明的是,本实施例中的待融合表是指包括增量(新增加的数据)和表的原始内容的表,以上述例子中的a表和a表增量为例,实际就是指的上述的a表里数据和a表增量中的数据共同构成的表,换句话说,原始的存储有数据的表和这个表对应的新产生的数据,实际上是同时存储在一个表文件中的。本实施例中,所述融合信息可以采用excel表来存储。如图10所示,当融合信息存储在excel表里时,可以预先确定excel表里某个具体位置存储第一识别信息,哪些位置存储第二识别信息,然后直接在代码中设置好具体从哪一个excel表里的哪个位置中获取第一识别信息和第二识别信息即可。例如,第一识别信息和第二识别信息存储在excel表“mb.test1”中时,第一识别信息为“mb.test1”,存储在excel表里的第一行第一列(a1单元格),其中a1单元格填写融合目标表在可更新数据存储工具如hbase中的表名,“mb”为可更新数据存储工具如hbase中数据库的名称,test1为融合目标表的名称(第一识别信息);待融合表有三个,对应的第二识别信息分别为“ys.test1”、“ys.test2”、“ys.test3”,这三个第二识别信息分别对应存储在excel表“mb.test1”中b1单元格、c1单元格、d1单元格三个位置处。代码中只需要设置好从excel表里哪个单元格读取上述识别信息即可。本实施例中,采用excel表来存储第一识别信息和第二识别信息,能够在不修改代码的情况下,直接对excel表里第一识别信息和第二识别信息进行更改,无需专业编程人员的操作即可方便地对待融合表以及融合目标表进行修改,降低了对数据融合操作的难度,降低了成本。可选地,本实施例中,依次从所述多个待融合表里确定一个目标执行表的步骤包括,按照预先设置的执行顺序依次从所述多个待融合表里确定一个目标执行表。本实施例中,由于对于不同的待融合表而言,相互之间可能会存在类型相同的数据,由于某些特殊的原因,其中一部分待融合表里的部分数据会更适合作为对所有待融表融合过程中的最终数据而进行存储。因此,本实施例中,预先设置执行顺序,并按照预先设置好的执行顺序来进行数据融合,这样,就可以充分利用可更新数据存储工具支持数据更新的特点,使更适合的数据替代不是那么适合的数据,因此,这样能够提高数据的准确性和可靠性。以待融合表为上述的a'、b'、c'表为例,如果a'表的来源渠道可靠性大于b'表,b'表的来源渠道可靠性大于c'表,那么预设的执行顺序可以是c'表、b'表、a'表。这样,b'表里与c'表里重合的待融合数据会将根据c'表更新的对应数据覆盖掉,a'表里与b'表里重合的待融合数据会将根据b'表更新的对应数据覆盖掉。例如,请参照图10,当excel表中每一类对应一个待融合表或者融合目标表时,当采用excel表来实现融合信息表时,b列权重高于c列,c列高于d列,以此类推。融合目标表的“xm”字段是对应ys.test1和ys.test2两个表的获取到的,ys.test1在b列,ys.test2在c列,因此ys.test1的权重高于ys.test2。如果ys.test1中有一条数据第一主键为101,第一字段“xm”为李露,ys.test2中有一条数据主键为101,第一字段“name”为李丽丽,最终的融合数据以高权重为准,则融合后第一字段“xm”为李露。请参照图11,可选地,本实施例中,所述电子设备100中还预先存储有最近一次融合数据时所融合数据的截止时间,该截止时间的初始值为预设时间。步骤s130包括子步骤s131-子步骤s135。步骤s131,获取所述目标执行表最近一次进行数据融合时,所融合数据的截止时间。步骤s132,判断所述截止时间是否为预设时间。步骤s133,如果所述截止时间是所述预设时间,则获取目标执行表里所有的数据及对应的第一主键、第一字段。具体地,根据所述目标执行表的第二识别信息获取所述目标执行表里所有的数据作为待融合数据,并获取每个所述待融合数据对应的第一主键和第一字段。步骤s134,如果所述截止时间不是所述预设时间,则获取目标执行表对应的数据获取规则的规则识别信息。具体地,从预先存储的融合信息中获取所述目标执行表对应的数据获取规则的规则识别信息。步骤s135,根据数据获取规则获取待融合数据及对应的第一主键、第一字段。具体地,根据所述目标执行表的第二识别信息以及该目标执行表对应的数据获取规则从原始数据库中获取待融合数据、所述待融合数据对应的第一主键和第一字段。所述数据获取规则用于表征待融合数据的范围。原始数据库是指存储待融合表的数据库,例如,本实施例中所述的hive数据库。本实施例中,首先目标执行表是否为首次融合,并在目标执行表是首次融合的情况下,采用全量融合的方式,也就是将目标执行表的所有数据都作为待融合数据,从而将目标执行表的所有数据全部写入融合目标表里。本实施例中,预先在融合信息表里,设置数据获取规则的规则识别信息,在目标执行表不是首次融合的情况下,根据预设的数据获取规则来获取待融合数据,从而可以选择性地对数据进行融合更新,也就是根据规则识别信息来对数据进行处理,如此,便可以对不同的待融合表采用不同的融合策略来实现,对于不同的待融合表进行针对性的融合。能够确保首次融合时,融合数据的完整性。请参照图12,可选地,本实施例中,步骤s135包括子步骤s1351-子步骤s1353。步骤s1351,判断所述数据获取规则是否为获取全量数据。步骤s1352,如果所述数据获取规则是获取全量数据,则对待融合表进行全量融合。具体地,根据所述目标执行表的第二识别信息获取所述目标执行表里所有的数据作为待融合数据,并获取每个所述待融合数据对应的第一主键和第一字段。步骤s1353,如果所述数据获取规则不是获取全量数据,则对待融合表进行增量融合。具体地,将新产生的增量数据作为待融合数据并获取所述待融合数据对应的第一主键以及第一字段。本实施例中,所述数据获取规则是获取全量数据,则代表将目标执行表的全部数据作为待融合数据,此时,则获取目标执行表的全部数据作为待融合数据,即进行全量融合。如果数据获取规则不是获取全量数据,则获取最近一次融合的数据的截止时间直至当前时间期间所新增的数据(增量数据)作为待融合数据,即增量融合。本实施例中,根据数据获取规则来获取数据,可以实现针对性地对数据进行更新。请继续参照图10,本实施例中,所述融合信息表采用excel表来实现时,此时,第一识别信息、第二识别信息和数据获取规则的规则识别信息均存储在excel表里。其中,每个待融合表的规则识别信息可以与其对应的第二识别信息存储在同一位置,也就是说,每个待融合表的规则识别信息可以与其对应的第二识别信息可以采用一个单元格中的同一字符串来实现。例如,本实施例中,对于待融合表“ys.test3”,如果对其需要采用增量融合的方式(只将新增的数据重新写入融合目标表里的方式),此时如果新增的数据字段为更新时间“gxsj”对应的数据,那么,此时,可以在第二识别信息“ys.test3”后加上“|gxsj”,也就是说,excel表里的d1处存储“ys.test3|gxsj”。这样,在读取第二识别信息的代码中,增加一个可执行代码来识别出第二识别信息和规则识别信息即可。本实施例中,采用excel表来存储规则识别信息,可以方便对不同待融合表的数据获取规则进行更换。本实施例中,对于一种融合方式(一种数据融合任务)而言,上述采用excel表来实现融合信息表时,可以将融合信息表里的所有内容存储在一个“sheet”页中,这样,当有多个融合任务时,则可以根据相应的融合任务从对应的“sheet”页中获取相应的融合信息。本实施例中,融合信息表配置好后,可以放在指定的位置。本实施例用于在获取目标执行表里的待融合数据时,同时获取待融合数据对应的第一主键和第一字段。从而便于根据第一主键和第一字段对待融合数据进行数据融合。例如,本实施例中,当融合目标表里预先已经配置好存储数据的第二主键和第二字段时,此时,就可以根据待融合数据的第一主键确定该待融合数据在融合目标表里对应的第二主键,同时根据待融合数据的第一字段确定该待融合数据在融合目标表里对应的第二字段。例如,待融合数据“张三”对应的第一主键“id”为“101”、第一字段为姓名“xm”,当融合目标表里预先已经配置好存储数据的第二主键“id”包括“101”、“102”,第二字段包括姓名“xm”、年龄“nl”时,此时,就会将“张三”存储在融合目标表里第二主键“id”为“101”和第二字段姓名“xm”对应的位置处。请继续参照图10,可选地,本实施例中,所述融合信息表里存储有融合目标表里的第二主键以及至少一个第二字段、每个所述待融合表里的第一主键以及至少一个第一字段,所述第二主键用于标识融合目标表里的一条数据记录,所述第二字段用于标识融合目标表融合目标表里的一类数据,所述方法还包括,根据第二主键以及第二字段、每个所述待融合表里的第一主键以及第一字段在所述融合信息表里的位置获得第二主键与所述第一主键的对应关系、每个第二字段与每个第一字段的对应关系。步骤s140具体为根据所述第一主键对应的第二主键在所述融合目标表里的位置以及所述第一字段对应的第二字段在融合目标表里的位置确定该待融合数据的存储位置。例如,采用excel表来实现上述方案时,采用特定的单元格来存储第二主键、第二字段、各个第一主键以及各个第一字段,比如,可以将位于同一行的第一字段和第二字段视为相对应的,第一主键和同一行的第二主键视为相对应的,也就是相互关联的。然后根据存储第二主键、第二字段、各个第一主键以及各个第一字段的位置来确定各个第一主键之间的对应关系。请继续参照图10所示,例如,可以在excel表“mb.test1”中,将a2设置为第二主键“rowkey”,将b2设置为第一主键“id”,将c2设置为第一主键“key”,将d2设置为第一主键“sfzhm”。第二字段“xm”对应的第一字段为“xm”、“name”,第二字段“nl”对应的第一字段为“nl”,第二字段“xb”对应的第一字段为“xb”,第二字段“csny”对应的第一字段为“csny|1”,其中,“|1”表示采用第一种数据校验规则进行校验。可选地,本实施例中,所述电子设备100中还预先存储有数据校验规则,在根据所述待融合数据对应的第一主键以及第一字段将所述待融合数据存储在所述融合目标表里的步骤前,所述方法还包括,根据所述数据校验规则对所述待融合数据进行初步处理,获得新的待融合数据。在一些场景下,例如对个人数据进行融合时,往往需要对身份证号码、日期、时间、mac地址、经纬度、车牌号码等做校验或者转换处理,因此融合模版中也可以添加对应的数据校验规则的识别号。规则添加在excel表里,具体地,请继续参照图10,本实施例中,还可以为各个第一主键或者第一字段设置数据校验规则,具体地,可以在mysql数据库中存储数据校验规则,数据校验规则对应的存储方式示例如图13所示,第一列的数据代表数据处理规则的识别号,第二列代表各个识别号对应的数据处理规则的识别信息。然后在excel表“mb.test1”的第一主键后面添加相应的数据校验规则,例如,当对第一主键“id”需要采用第三种数据校验规则处理时,则在第一主键“id”后添加“|3”,从而构成“id|3”;当对第一主键“key”需要采用第三种数据校验规则处理时,则在“key”后添加“|3”,从而构成“key|3”;当对第一主键“sfzhm”需要采用第三种数据校验规则处理时,则在“sfzhm”后添加“|3”,从而构成“sfzhm|3”。当然,本实施例中,当对于同一个数据需要采用多种数据校验规则进行处理时,也可以采用“-”来添加数据校验规则,例如,在第一主键或者第一字段后面添加“|3-9”,则表示采用第3种和第9种数据校验规则进行数据处理。这样在获取第一识别信息时,首先获取包括第一识别信息的各个字符,然后从中解析出第一识别信息和数据校验规则,接着按照数据校验规则进行对应数据的处理。需要说明的是,本实施例中,在实现以上方案之前,可以预先配置系统配置文件和任务配置文件。系统配置文件具体包括配置存储数据校验规则的存储地址以及可更新数据存储工具的相关信息,例如,采用mysql数据库存储数据校验规则时,需要配置mysql数据库的ip地址、用户名、用户密码以及存放元数据的库名。可更新数据存储工具采用hbase数据库时,需要配置连接地址、访问端口以及hbase中存放数据的名字空间名称。系统配置文件的信息是为读写mysql和hbase提供的,而任务配置文件的信息是为跑数据分配资源提供的。任务配置文件具体可以包括:spark任务资源的相关配置。以下举例来对本实施例的数据融合过程进行讲解:首先,进行初始化,即建立mysql中的元数据信息(包括数据校验规则)以及hbase中的数据库。然后进行融合信息表解析,解析融合信息表时,先根据融合信息判断待融合表里是否有增量表(添加有增量的第一字段的第一识别信息对应的表);如果待融合表没有增量表,则直接将融合信息表解析成可执行的语句,如果有增量表,则计算出该增量表增量字段的最大时间(当前的时间),将该最大时间记录在mysql数据库中的元数据表里,并且以该最大时间与上次该表存入的最大时间(最近一次进行数据融合时所融合数据的截止时间),计算出此次需要融合的增量数据(如果该增量表在元数据中没有增量信息,则证明该表为首次融合,会以全量数据进行计算),以生成相应的执行语句。所生成的执行语句存储为scala.collection.mutable.hashmap[string,scala.collection.immutable.map[string,string]]()的格式,例如图10可以解析为map(mb.test1->(1->sql1,2->sql2,3->sql3),mb.test2->(1->sql3,2->sql4))。mb.test1->(1->sql1,2->sql2,3->sql3)为一个融合任务,里面有三条解析的sql语句sql1、sql2、sql3(分别对应excel表里名称为“mb:test1”的“sheet”页中b、c、d列对应的待融合表的融合任务),优先级(预设的执行顺序)分别为数字“1”、“2”、“3”,优先级数字越大的权重越小,越先执行。在具体执行各个待融合表的融合时,会根据各个表的权重按权重覆盖。具体地,在对各个待融合表进行数据融合前会先在hbase中以融合目标表的表名建表且将表的版本设置为1,这样可以让融合目标表里的数据只存一份,始终新版本覆盖旧版本。融合过程以map(mb:test1->(1->sql1,2->sql2,3->sql3),mb:test2->(1->sql3,2->sql4))进行举例,其中,map是指的哈希散列表,也就是说,上述执行融合的过程以哈希散列表的形式存储。该融合首先执行任务mb:test1(执行sheet页“mb:test1”对应的任务),会先在hbase中建表“mb:test1”,该融合任务中有三个sql1、sql2、sql3(sql执行语句1、2、3)分别对应图10中b、c、d三列的融合任务(分别用于对sheet页“mb:test1”中b、c、d列待融合表进行融合),先执行优先级别数字最大的sql3,sql3会从ys.test3中过滤掉第一主键“sfzhm”为空的数据,获取第一主键“sfzhm”、第一字段“nl”,再通过spark写入hbase中名称为“mb:test1”的融合目标表里,第一主键“sfzhm”对应融合目标表“mb:test1”的第二主键“rowkey”,第一字段“nl”对应融合目标表“mb:test1”的第二字段“nl”,接下来执行sql2,从ys.test2中过滤掉第一主键“key”为空的数据,获取第一主键“key”、第一字段“name”、第一字段“csny”,继而写入hbase中名称为“mb:test1”的融合目标表里,第一主键“key”对应融合目标表“mb:test1”的第二主键“rowkey”,第一字段“name”对应融合目标表“mb:test1”的第二字段“nl”,第一字段“csny”对应融合目标表“mb:test1”的第二字段“csny”,sql1的执行逻辑同理,如果sql1和sql2插入的数据有主键值相同的,则sql1的第一字段“xm”会覆盖sql2的第一字段“name”。最终三个表里的数据都会基于相同的主键填入各自的位置,拼接成完整的数据,完成数据融合。因为hbase支持更新以及列式存储,因此在数据融合的过程中,无论全量数据还是增量数据,逻辑上都当作相同性质的一批数据,直接写入。也因为数据的融合是在各个原始表分批次写入的过程中自动完成的,因此无需消耗过大的内存用来先融合再写入。最后任务mb:test1执行完之后执行任务mb:test2,原理同上。请参照图14,本申请的实施例还提供一种数据融合装置110,所述装置包括第一获取模块111、确定模块112、第二获取模块113和融合模块114。所述数据融合装置110包括一个可以软件或固件的形式存储于所述存储器120中或固化在所述电子设备100的操作系统(operatingsystem,os)中的软件功能模块。第一获取模块111,用于获取预先存储的融合信息,所述融合信息包括融合目标表的第一识别信息、多个待融合表的第二识别信息,其中,所述融合目标表为可更新数据存储工具中用于存储融合后的数据的表。本实施例中的第一获取模块111用于执行步骤s110,关于所述第一获取模块111的具体描述可参照对所述步骤s110的描述。确定模块112,用于依次从所述多个待融合表里确定一个目标执行表。本实施例中的确定模块112用于执行步骤s120,关于所述确定模块112的具体描述可参照对所述步骤s120的描述。第二获取模块113,用于针对所述目标执行表,根据所述目标执行表的第二识别信息从原始数据库中获取待融合数据以及所述待融合数据对应的第一主键和第一字段,所述第一主键用于标识目标执行表里一条数据记录,所述第一字段用于标识目标执行表里一类数据。本实施例中的第二获取模块113用于执行步骤s130,关于所述第二获取模块113的具体描述可参照对所述步骤s130的描述。融合模块114,用于根据所述待融合数据对应的第一主键以及第一字段将所述待融合数据存储在所述融合目标表里。本实施例中的融合模块114用于执行步骤s140,关于所述融合模块114的具体描述可参照对所述步骤s140的描述。本实施例还提供一种可读存储介质,所述可读存储介质中存储有可执行程序,处理器130在执行所述可执行程序时,实现如本实施例任一项所述的方法。以上所述,仅为本申请的各种实施方式,但本申请的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1