基于数据仓库进行大数据处理的方法以及装置与流程

文档序号:11620587阅读:307来源:国知局
基于数据仓库进行大数据处理的方法以及装置与流程

本申请涉及数据处理技术领域,尤其涉及一种基于数据仓库进行大数据处理的方法以及装置。



背景技术:

目前,在业务系统的业务数据发送处于从老的处理系统迁移到新处理系统的过渡时期时,老处理系统和新处理系统可同时对业务文件进行处理,而由于老处理系统和新处理系统处理的方式和最终生成的业务文件中数据的分布均不相同,但所有的产出文件所包含的总的数据量应该是相同的,所以需要通过业务文件的事后监督任务进行针对新处理系统、老处理系统所产出文件数据的核对,以保证新处理系统和老处理系统所产出数据的一致性。

相关技术中,通过以下方式以实现对新处理系统、老处理系统所产出文件数据进行核对:可分别将新处理系统和老处理系统所产出的所有业务文件中的数据进行整合、排序等预处理操作,之后,可通过程序的对比算法对新处理系统和老处理系统中经过预处理操作的数据进行数据对比处理。

但是,目前存在的问题是,上述实现方式在对所有业务文件中的数据进行预处理操作之后,需要保证对比算法的性能具有相当程序的高效稳定,而这种要求往往是一件相当棘手的事情,并且真正在线上运行时,很有可能会出现内存溢出的情况,导致整个机器宕机,无法按时完成业务文件的事后监督任务,导致数据处理效率低、可靠性差等。



技术实现要素:

本申请的目的旨在至少在一定程度上解决上述的技术问题之一。

为此,本申请的第一个目的在于提出一种基于数据仓库进行大数据处理的方法。该方法通过高可用文件导入数据仓库的方式,并依赖数据仓库支持的大数据处理能力,实现了高效、可靠的对批处理文件中存在的大量无序分布的数据进行核对处理的目的。

本申请的第二个目的在于提出一种基于数据仓库进行大数据处理的装置。

为了实现上述目的,本申请第一方面实施例的基于数据仓库进行大数据处理的方法,包括:分别创建针对第一处理系统和第二处理系统的第一任务和第二任务;分别获取所述第一任务和第二任务对应的第一文件数据和第二文件数据,并分别将所述第一文件数据和第二文件数据发送至所述数据仓库中;基于所述数据仓库对所述发送至所述数据仓库中的第一文件数据和第二文件数据进行处理。

本申请实施例的基于数据仓库进行大数据处理的方法,可先分别创建针对第一处理系统和第二处理系统的第一任务和第二任务,然后,开始执行第一任务和第二任务,即分别获取第一任务和第二任务对应的第一文件数据和第二文件数据,并分别将第一文件数据和第二文件数据发送至数据仓库中,最后,基于数据仓库对发送至数据仓库中的第一文件数据和第二文件数据进行对比。即通过采用任务来实现高可用文件内容导入数据仓库的方式,并依赖数据仓库所支持的大数据处理能力的做法,实现了高效、可靠的对批处理文件中存在的大量无序分布的数据进行核对处理的目的,在该大数据对比处理的过程中,只需要保证文件数据导入数据仓库的高效稳定、以及提供给数据仓库简单的进行内容比较的语句,便能够兼顾无序大数据比较的高效性和可靠性。

为了实现上述目的,本申请第二方面实施例的基于数据仓库进行大数据处理的装置,包括:任务创建模块,用于分别创建针对第一处理系统和第二处理系统的第一任务和第二任务;任务执行模块,用于分别获取所述第一任务和第二任务对应的第一文件数据和第二文件数据,并分别将所述第一文件数据和第二文件数据发送至所述数据仓库中;数据处理模块,用于基于所述数据仓库对所述发送至所述数据仓库中的第一文件数据和第二文件数据进行处理。

本申请实施例的基于数据仓库进行大数据处理的装置,可通过任务创建模块分别创建针对第一处理系统和第二处理系统的第一任务和第二任务,任务执行模块开始执行第一任务和第二任务,即分别获取第一任务和第二任务对应的第一文件数据和第二文件数据,并分别将第一文件数据和第二文件数据发送至数据仓库中,数据处理模块基于数据仓库对发送至数据仓库中的第一文件数据和第二文件数据进行处理。即通过采用高可用文件内容导入数据仓库的方式,并依赖数据仓库所支持的大数据处理能力的做法,实现了高效、可靠的对批处理文件中存在的大量无序分布的数据进行核对处理的目的,在该大数据对比处理的过程中,只需要保证文件数据导入数据仓库的高效稳定、以及提供给数据仓库简单的进行内容比较的语句,便能够兼顾无序大数据比较的高效性和可靠性。

本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。

附图说明

本申请的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1是根据本申请一个实施例的基于数据仓库进行大数据处理的方法的流程图;

图2是根据本申请一个实施例的第一处理系统所产出的业务文件结构的示例图;

图3是根据本申请一个实施例的任务的状态流转图的示意图;

图4是根据本申请一个实施例的第一任务执行的线程池策略的示例图;

图5是根据本申请一个实施例的第一数据分片中的数据进行逐条插入的流程图;

图6是根据本申请一个实施例的第二数据分片中的数据进行逐条插入的流程图;

图7是根据本申请一个实施例的第一任务被执行时第一文件数据进行插入的示例图;

图8是根据本申请一个实施例的基于数据仓库进行大数据处理的装置的结构框图;

图9是根据本申请一个实施例的任务创建模块的结构框图;

图10是根据本申请一个实施例的任务执行模块的结构框图;

图11是根据本申请一个实施例的基于数据仓库进行大数据处理的方法应用于业务系统中文件迁移场景的交互示意图。

具体实施方式

下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。

下面参考附图描述本申请实施例的基于数据仓库进行大数据处理的方法以及装置。

需要说明的是,本申请实施例的基于数据仓库进行大数据处理的方法可应用于业务系统进行文件迁移的场景中,即其应用场景可例如定义如下:业务系统获取第三方系统生成的多个用户业务文件(如10个用户收益文件),之后,以每个大文件为维度创建多个大文件夹(如10个大文件夹),并对每个大文件夹进行处理以生成临时文件,并将临时文件按照分表分库位(如00-99)拆分成最终文件,并将这些最终文件存储到指定路径后,发消息到对应的账务系统,以通知该账务系统解析这些最终文件并最终完成该业务数据的处理。在对业务数据进行发送的过程中,由于业务系统从老系统过渡到新系统期间,新、老处理系统一同进行业务文件的处理,其处理方式和最后生成的数据分布都不尽相同,因此需要对产出的文件进行数据内容的比较核对,以确保新系统处理的可靠性。为此,本申请基于上述应用场景,提出了一种基于数据仓库进行大数据处理的方法。

图1是根据本申请一个实施例的基于数据仓库进行大数据处理的方法的流程图。如图1所示,该基于数据仓库进行大数据处理的方法可以包括:

s110,分别创建针对第一处理系统和第二处理系统的第一任务和第二任务。

作为一种示例,可分别扫描第一处理系统和及第二处理系统生成的第一索引文件和第二索引文件,并分别根据第一索引文件和第二索引文件按照预设规则创建第一任务和第二任务。

需要说明的是,在本申请的一个实施例中,在分别扫描第一处理系统和第二处理系统生成的第一索引文件和第二索引文件之前,该方法还可包括:第一处理系统获取第一业务数据,并根据第一业务数据生成多个第一大文件,并对多个第一大文件进行业务文件处理以生成多个第一文件数据,并将多个第一文件数据存储到第一指定路径,以及根据第一指定路径生成第一索引文件;第二处理系统获取第二业务数据,并根据第二业务数据生成多个第二大文件,并对多个第二大文件进行业务文件处理以生成多个第二文件数据,并将多个第二文件数据存储至第二指定路径,以及根据第二指定路径生成第二索引文件。

也就是说,在基于数据仓库对第一处理系统和第二处理系统所产出的业务文件中的数据进行对比之前,第一处理系统和第二处理系统可分别获取业务数据,并按照一定规律对这些业务数据进行处理以产出对应的业务文件,最后将这些业务文件存储到对应的指定路径,并根据指定路径生成对应的索引文件。举例而言,以第一处理系统对第一业务数据进行处理为例,第一处理系统在获取到第一业务数据之后,以每个大文件为维度创建多个第一大文件,在每个第一大文件下处理生成临时文件,并将临时文件按照分表分库位拆分成多个第一子文件,并将每个第一子文件下存储多个第一小文件,最后,将这些生成的文件(如第一大文件、第一子文件、第一小文件)存储到对应的指定路径,并根据该指定路径生成对应的第一索引文件。例如,以第一业务数据的个数为10个、10个第一业务数据中共有5000万条数据为例,该第一处理系统所产出的业务文件结构可如图2所示:10个第一大文件,每个第一大文件中包含100个第一子文件,每个第一子文件中包含10个第一小文件,每个第一小文件中存储5000条数据。

由此,通过第一处理系统和第二处理系统生成对应的第一索引文件和第二索引文件,以便在基于数据仓库对第一、第二处理系统所产出的文件数据进行对比时,通过扫描第一索引文件和第二索引文件以创建对应的事后监督任务,即创建针对第一处理系统的第一任务以及针对第二处理系统的第二任务。

还需要说明的是,在本申请的实施例中,上述预设规则可理解是根据实际需求进行的设置,例如,可根据第一处理系统以及第二处理系统所产出的业务文件结构来设定该预设规则,比如,以如图2给出的示例为例,该预设规则可为以第一子文件为维度。

举例而言,在扫描到第一索引文件以及第二索引文件之后,可根据第一索引文件按照第一子文件为维度创建第一任务,并根据第二索引文件按照第二子文件为维度创建第二任务。其中,该第一任务和第二任务的个数可为多个。也就是说,针对不同的处理系统,可根据不同的处理系统生成的索引文件按照子文件目录为维度创建不同处理系统的任务,由于处理系统有两个,所以针对不同的处理系统可以创建多个任务,以如图2给出的示例为例,可创建2000条任务(总共两个处理系统(即第一处理系统和第二处理系统)的产出*10个大文件*100个子文件目录)(即包括第一任务和第二任务),之后,可将这些任务写入至任务数据库中,其中,每一条任务以“系统名/大文件名/子文件目录名”拼接成一个用以指示任务标识的任务字段(如task_biz_no)作为幂等条件写入该任务数据库中,例如,以任务字段的内容为fundmng/thfund_user_profit_currency_20150408_0002/96为例,该任务字段可表示:第一处理系统中第2个大文件下的96库子文件目录;以任务字段的内容为yebbatch/thfund_user_profit_currency_20150408_0001/87为例,该任务字段可表示:第二处理系统中第1个大文件下的87库子文件目录。

s120,分别获取第一任务和第二任务对应的第一文件数据和第二文件数据,并分别将第一文件数据和第二文件数据发送至数据仓库中。

具体地,在分别创建针对第一处理系统和第二处理系统的第一任务和第二任务之后,可从任务数据库中读取这些任务并开始执行这些任务,当任务被执行时,可获取该任务对应的子文件目录下的小文件群的数据,并通过该任务将这些小文件群的数据发送到数据仓库中。例如,以当前被执行的任务为第一任务为例,即当第一任务被执行时,可获取该第一任务对应的第一子文件目录下的第一小文件群的数据,并通过该第一任务将这些第一小文件群的数据发送到数据仓库中。可以理解,第二任务的执行过程与第一任务的执行过程相同,第二任务的实现过程可参照第一任务的执行过程的描述,在此不再赘述。

进一步地,在本申请的一个实施例中,分别将第一文件数据和第二文件数据发送至数据仓库中的具体实现过程可包括:可先分别将第一文件数据和第二文件数据插入至第一中间临时表和第二中间临时表,之后,可接收数据仓库的数据传送请求,并根据数据传送请求分别将第一中间临时表和第二中间临时表中的数据发送至数据仓库中。

需要说明的是,为了能够提高数据插入效率,并能够实现一定时间内历史插入记录的保存,在本申请的一个实施例中,可按照预设时间创建多张中间临时表。在本申请的实施例中,在将第一文件数据和第二文件数据发送到数据仓库中之前,可先确定第一文件数据以及第二文件数据的生成时间信息,并根据该生成时间信息从多张中间临时表中获取与该生成时间信息对应的两张中间临时表,并清除这两张中间临时表中的数据,最后,将第一文件数据和第二文件数据分别插入到经过数据清除操作的那两张中间临时文件中。

也就是说,可按照业务数据的生成时间以及数据条数来确定中间临时表的数量,例如,由于处理系统每日所产生的业务数据中数据的数量为5000万条,如果中间临时表采用单表存储,则每次一天都需要清除之前一天插入的数据,行级删除效率很低且慢,所以可按照一周7天,创建14张中间临时表:fmp_gd_file_4_mng_[00~07]、fmp_gd_file_4_batch[00~07],在获取到当天的业务数据时,可将处理后的业务数据插入到该当天所对应的两种中间临时表中,以此按周轮询。由于中间临时表的数据只有在插入之前才会先做清除,所以按照这种方式,还可以保存之前6天的插入记录。

为了提高数据导入效率,在本申请的实施例中,可针对第一文件数据,将第一文件数据进行整合并拆分以得到多个第一数据分片,并将该多个第一数据分片批量插入到第一中间临时表中;针对第二文件数据,将第二文件数据进行整合并拆分以得到多个第二数据分片,并将该多个第二数据分片批量插入到第二中间临时表中。

可以理解,以将第一文件数据插入第一中间临时表为例,在插入的过程中,第一文件数据中的每一行数据对应第一中间临时表的一条记录,该行数据的内容则拼接后落入第一中间临时表中的对应数值字段(如value字段)中,用于之后的比较核对处理。第一文件数据中的数据每插入一条记录,则同时在第一中间临时表中对应的幂等(如idempotent)字段中写入由“对应第一小文件的路径/第一小文件名|第一文件数据中的数据的唯一性字段|拆分后的批次号”来拼接而成的字符串,并作为幂等字段,该幂等字段可形如:thfund_user_profit_currency_20150330_0000/04/20150330_00002_thfund_04.txt|62110011397380480156|4。

s130,基于数据仓库对发送至数据仓库中的第一文件数据和第二文件数据进行处理。

作为一种示例,可基于数据仓库根据预设的sql语句对发送到数据仓库中的第一文件数据和第二文件数据进行处理,例如,可基于数据仓库对该第一文件数据和第二文件数据进行对比处理。其中,在本示例中,该预设的sql语句可理解为可用于简单的进行内容比较的sql语句。也就是说,在将第一文件数据以及第二文件数据发送到数据仓库中之后,可依赖数据仓库所支持的大数据处理能力,根据预设的sql语句对发送到数据仓库中的第一文件数据和第二文件数据中的数据进行对比。例如,可通过数据仓库根据发送过来的两张中间临时表中的幂等(如idempotent)字段来确定对应的数据,并针对两张中间临时表中的数值字段(如value字段)的值,进行该条数据内容的比较。由此,通过数据仓库的大数据处理能力,保证了数据对比的效率,并提高了准确度。

本申请实施例的基于数据仓库进行大数据处理的方法,可先分别创建针对第一处理系统和第二处理系统的第一任务和第二任务,然后,开始执行第一任务和第二任务,即分别获取第一任务和第二任务对应的第一文件数据和第二文件数据,并分别将第一文件数据和第二文件数据发送至数据仓库中,最后,基于数据仓库对发送至数据仓库中的第一文件数据和第二文件数据进行处理。即通过采用任务来实现高可用文件内容导入数据仓库的方式,并依赖数据仓库所支持的大数据处理能力的做法,实现了高效、可靠的对批处理文件中存在的大量无序分布的数据进行核对处理的目的,在该大数据对比处理的过程中,只需要保证文件数据导入数据仓库的高效稳定、以及提供给数据仓库简单的进行内容比较的语句,便能够兼顾无序大数据比较的高效性和可靠性。

为了更好地监控任务的执行情况,在本申请的一个实施例中,可对每个第一任务和第二任务进行状态标记。举例而言,以第一任务为例,该第一任务可包括五中状态:初始状态、处理中状态(或称为执行中状态)、插入成功状态、插入失败状态和异常状态。例如,如图3所示,为任务的状态流转图:00:任务刚创建时的初始状态,表示等待调度框架处理;01:处理中;02:数据插入数据仓库中的数据库表成功;03:数据插入数据仓库中的数据库表失败;04:任务处理异常(其中,该任务的重试次数超过重试最大次数)。

需要说明的是,可通过任务执行的线程池的优化设置和队列繁忙后的处理策略,来保证大批文件的高可用导入。具体地,在本申请的一个实施例中,分别将第一文件数据和第二文件数据插入至第一中间临时表和第二中间临时表的具体实现过程可如下:创建第一线程,并针对第一文件数据,通过第一线程中的第一主线程将第一文件数据进行整合并拆分以得到多个第一数据分片,并将多个第一数据分片分别存入第一队列中,以及分别通过第一线程中的多个第一子线程将第一队列中的多个第一数据分片批量插入至第一中间临时表;创建第二线程,并针对第二文件数据,通过第二线程中的第二主线程将第二文件数据进行整合并拆分以得到多个第二数据分片,并将多个第二数据分片分别存入第二队列中,以及分别通过第二线程中的多个第二子线程将第二队列中的多个第二数据分片批量插入至第二中间临时表。

也就是说,以第一任务被执行为例,如图4所示,在第一任务被执行之后,可创建一个第一线程,并通过该第一线程对该第一任务对应的第一子文件目录下的第一小文件进行整合、排序,并将整合、排序后的数据拆分成以多条数据为一个整体的分片,即第一数据分片,随即将拆分得到的分片丢入第一队列。第一队列中的第一数据分片很快的会被线程池中的第一子线程消费掉,具体表现为多条为一个整体的分片进行批量插入到第一中间临时表中。

在本申请的实施例中,当第一队列占满时,中断第一主线程,并在等待第一队列中的第一数据分片被消费掉之后,继续启动第一主线程,并通过第一主线程将第一文件数据中的剩余数据进行整合并拆分以得到多个第一数据分片;当第二队列占满时,中断第二主线程,并在等待第二队列中的第二数据分片被消费掉之后,继续启动第二主线程,并通过第二主线程将第二文件数据中的剩余数据进行整合并拆分以得到多个第二数据分片。

也就是说,考虑到如果当队列占满时,会导致内存溢出、甚至宕机的情况发生,因此可采用队列满员后,主线程hold住的策略,一旦等到队列中的分片被消费掉之后,再次存入队列等待下游的线程执行。由此,通过线程池的优化设置和队列繁忙后的处理策略,保证了大批文件的高可用导入。

为了保证数据导入的高可用性和可靠性,进一步地,在本申请的一个实施例中,该方法还可包括:当多个第一数据分片批量插入失败时,将多个第一数据分片中的数据逐条插入至第一中间临时表;当多个第二数据分片批量插入失败时,将多个第二数据分片中的数据逐条插入至第二中间临时表。

例如,以第一数据分片批量插入失败为例,当批量插入如果遇到异常失败的情况下,可累计该批量插入所对应的任务的重试次数,并将该失败的文件名写入任务数据库表中的biz_data字段,并等待重试。当该任务被重新执行时,确定任务数据库表中的biz_data字段是否存在失败文件的记录,若存在,则表示该任务曾被批量插入失败,此时可换用逐条插入的方式,对于该失败批量插入所对应的数据分片中的数据进行逐条的插入,以确保最大限度的将数据导入中间临时表中。

作为一种示例,在本申请的实施例中,如图5所示,将多个第一数据分片中的数据逐条插入至第一中间临时表的具体实现过程可包括:

s510,确定多个第一数据分片中的当前数据的标识信息。

s520,根据标识信息判断当前数据是否已插入至第一中间临时表中。

s530,如果当前数据已插入至第一中间临时表中,则将多个第一数据分片中的下一条数据插入至第一中间临时表。

s540,如果当前数据未插入至第一中间临时表中,则将当前数据插入至第一中间临时表。

作为一种示例,在本申请的实施例中,如图6所示,将多个第二数据分片中的数据逐条插入至第二中间临时表的具体实现过程可包括:

s610,确定多个第二数据分片中的当前数据的标识信息。

s620,根据标识信息判断当前数据是否已插入至第二中间临时表中。

s630,如果当前数据已插入至第二中间临时表中,则将多个第二数据分片中的下一条数据插入至第二中间临时表。

s640,如果当前数据未插入至第二中间临时表中,则将多个第二数据分片中的当前数据插入至第二中间临时表。

由此,通过当前数据的标识信息来判断该条数据之前是否已经成功插入到中间临时表中,即通过数据库的唯一性约束保证了该条数据不会进行重复插入,避免了任务异常重试带来的脏数据写入的问题。

举例而言,如图7所示,以第一任务被执行为例,当第一任务被执行时,可遍历该第一任务所对应的第一文件数据,并将该第一文件数据拆分成多个第一数据分片,并将该多个第一数据分片进行批量插入到第一中间临时表,若该批量插入成功,则进行下一个第一任务的执行,若该批量插入失败,则将该失败批量插入所对应的第一数据分片中的数据进行逐条插入,若逐条插入成功,则进行下一条数据的逐条插入,若逐条插入失败,则保存失败文件,并在任务数据库表中记录该失败文件,并将该失败逐条插入对应的任务的状态更新为失败状态,并累计重试次数。可以理解,如果逐条插入再次异常失败,则再次累计重试次数,直到重试次数超限时,将该第一任务的状态置为异常失败状态。

与上述几种实施例提供的基于数据仓库进行大数据处理的方法相对应,本申请的一种实施例还提供一种基于数据仓库进行大数据处理的装置,由于本申请实施例提供的基于数据仓库进行大数据处理的装置与上述几种实施例提供的基于数据仓库进行大数据处理的方法相对应,因此在前述基于数据仓库进行大数据处理的方法的实施方式也适用于本实施例提供的基于数据仓库进行大数据处理的装置,在本实施例中不再详细描述。图8是根据本申请一个实施例的基于数据仓库进行大数据处理的装置的结构框图。如图8所示,该基于数据仓库进行大数据处理的装置可以包括:任务创建模块100、任务执行模块200和数据处理模块300。

具体地,任务创建模块100可用于分别创建针对第一处理系统和第二处理系统的第一任务和第二任务。具体而言,在本申请的一个实施例中,如图9所示,该任务创建模块100可包括扫描单元110和创建单元120。其中,扫描单元110可用于分别扫描第一处理系统和第二处理系统生成的第一索引文件和第二索引文件。创建单元120可用于分别根据第一索引文件和第二索引文件按照预设规则创建第一任务和第二任务。

任务执行模块200可用于分别获取第一任务和第二任务对应的第一文件数据和第二文件数据,并分别将第一文件数据和第二文件数据发送至数据仓库中。

具体而言,在本申请的一个实施例中,如图10所示,该任务执行模块200可以包括数据插入单元210和数据发送单元220。其中,数据插入单元210可用于分别将第一文件数据和第二文件数据插入至第一中间临时表和第二中间临时表。数据发送单元220可用于接收数据仓库的数据传送请求,并根据数据传送请求分别将第一中间临时表和第二中间临时表中的数据发送至数据仓库中。

需要说明的是,可通过任务执行的线程池的优化设置和队列繁忙后的处理策略,来保证大批文件的高可用导入。具体地,在本申请的实施例中,数据插入单元210还可用于:创建第一线程,并针对第一文件数据,通过第一线程中的第一主线程将第一文件数据进行整合并拆分以得到多个第一数据分片,并将多个第一数据分片分别存入第一队列中,以及分别通过第一线程中的多个第一子线程将第一队列中的多个第一数据分片批量插入至第一中间临时表;创建第二线程,并针对第二文件数据,通过第二线程中的第二主线程将第二文件数据进行整合并拆分以得到多个第二数据分片,并将多个第二数据分片分别存入第二队列中,以及分别通过第二线程中的多个第二子线程将第二队列中的多个第二数据分片批量插入至第二中间临时表。

具体而言,在本申请的实施例中,如图10所示,该任务执行模块200还可包括:中断单元230和启动单元240。其中,中断单元230可用于在第一队列占满时,中断第一主线程。启动单元240可用于在等待第一队列中的第一数据分片被消费掉之后,继续启动第一主线程。其中,数据插入单元210还可用于通过第一主线程将第一文件数据中的剩余数据进行整合并拆分以得到多个第一数据分片。

此外,在本申请的实施例中,中断单元230还可用于在第二队列占满时,中断第二主线程。启动单元240还可用于在等待第二队列中的第二数据分片被消费掉之后,继续启动第二主线程。其中,数据插入单元210还可用于通过第二主线程将第二文件数据中的剩余数据进行整合并拆分以得到多个第二数据分片。由此,通过线程池的优化设置和队列繁忙后的处理策略,保证了大批文件的高可用导入。

为了保证数据导入的高可用性和可靠性,进一步地,在本申请的一个实施例中,数据插入单元210还可用于在多个第一数据分片批量插入失败时,将多个第一数据分片中的数据逐条插入至第一中间临时表,并多个第二数据分片批量插入失败时,将多个第二数据分片中的数据逐条插入至第二中间临时表。

作为一种示例,在本申请的实施例中,数据插入单元210还可用于:确定多个第一数据分片中的当前数据的标识信息,并根据标识信息判断当前数据是否已插入至第一中间临时表中;在当前数据已插入至第一中间临时表中时,将多个第一数据分片中的下一条数据插入至第一中间临时表;在当前数据未插入至第一中间临时表中时,将当前数据插入至第一中间临时表。

作为一种示例,在本申请的实施例中,数据插入单元210还可用于:确定多个第二数据分片中的当前数据的标识信息,并根据标识信息判断当前数据是否已插入至第二中间临时表中;在当前数据已插入至第二中间临时表中时,将多个第二数据分片中的下一条数据插入至第二中间临时表;在当前数据未插入至第二中间临时表中时,将多个第二数据分片中的当前数据插入至第二中间临时表。

数据处理模块300可用于基于数据仓库对同步至数据仓库中的第一文件数据和第二文件数据进行对比。

本申请实施例的基于数据仓库进行大数据处理的装置,可通过任务创建模块分别创建针对第一处理系统和第二处理系统的第一任务和第二任务,任务执行模块开始执行第一任务和第二任务,即分别获取第一任务和第二任务对应的第一文件数据和第二文件数据,并分别将第一文件数据和第二文件数据发送至数据仓库中,数据处理模块基于数据仓库对发送至数据仓库中的第一文件数据和第二文件数据进行对比。即通过采用高可用文件内容导入数据仓库的方式,并依赖数据仓库所支持的大数据处理能力的做法,实现了高效、可靠的对批处理文件中存在的大量无序分布的数据进行核对处理的目的,在该大数据对比处理的过程中,只需要保证文件数据导入数据仓库的高效稳定、以及提供给数据仓库简单的进行内容比较的语句,便能够兼顾无序大数据比较的高效性和可靠性。

为了使得本申请技术人员能够更加清楚地了解本申请,下面可结合应用场景进行描述。

举例而言,假设本申请实施例的基于数据仓库进行大数据处理的装置应用于业务系统中文件迁移场景中,即业务系统中的业务数据文件从业务系统中老处理系统迁移到新处理系统的过渡时期,老处理系统和新处理系统同时对业务数据文件进行处理,新、老处理系统处理的方式和最终生成的文件中数据的分布均不相同,但所有的生成文件中所包含的总的数据量应该是相同的,所以需要通过针对新、老处理系统所生成的文件数据进行核对处理,以保证新、老处理系统所生成的文件数据一致性,具体实现过程如下:

如图11所示,首先,第一处理系统10a(如业务系统中的老处理系统)可获取第一业务数据,并根据第一业务数据生成多个第一大文件,并对多个第一大文件进行业务文件处理以生成多个第一文件数据,并将多个第一文件数据存储到第一指定路径,以及根据第一指定路径生成第一处理系统10a的第一索引文件;第二处理系统10b(如业务系统中的新处理系统)获取第二业务数据,并根据第二业务数据生成多个第二大文件,并对多个第二大文件进行业务文件处理以生成多个第二文件数据,并将多个第二文件数据存储至第二指定路径,以及根据第二指定路径生成第二索引文件。然后,本申请实施例的基于数据仓库进行大数据处理的装置20可扫描第一处理系统10a生成的第一索引文件,并扫描第二处理系统10b生成的第二索引文件,并分别根据第一索引文件和第二索引文件按照预设规则创建第一任务和第二任务,以完成针对业务数据文件的后督任务的创建,以如图2所示的第一处理系统10a所生成的业务文件结构为例,可创建出针对该第一处理系统10a的多个第一任务(如1000条第一任务:10个大文件*100个子文件目录)。在任务创建完成之后,开始执行任务,可从任务数据库中分别读取这些任务并开始执行,如以针对第一处理系统创建的第一任务为例,在各个第一任务被执行的过程中,可针对各个第一任务,获取各个第一任务所对应的第一文件数据,即该第一任务对应的子文件目录下的小文件群的数据,并通过中间临时表的方式将这些小文件群的数据发送到数据仓库30中。可以理解,针对第二处理系统10b的第二任务的执行过程的描述与第一任务的执行过程描述相同,可参见针对第一任务的执行过程的描述。

本申请实施例的基于数据仓库进行大数据处理的装置20在分别将第一任务和第二任务所对应的第一文件数据和第二文件数据发送到数据仓库30之后,可基于数据仓库30对发送到该数据仓库30中的第一文件数据和第二文件数据进行处理,例如,可基于数据仓库30通过用以内容比较的sql语句来对发送到数据仓库30中的第一文件数据和第二文件数据进行对比处理,以保证第一处理系统10a和第二处理系统10b生成的文件数据的一致性。由此,通过分别针对第一处理系统10a和第二处理系统10b创建不同的任务,通过执行该任务可以高效、可用地将第一处理系统10a和第二处理系统10b所生成的文件数据导入到数据仓库,使得数据发送到数据仓库之后,数据无序分布、数据量巨大等问题通过数据仓库的操作迎刃而解,并通过数据仓库的大数据处理能力,保证了数据对比处理的效率和准确。

在本申请的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1