掌桥专利:专业的专利平台
掌桥专利
首页

一种数据解析方法、装置、计算机设备和存储介质

文献发布时间:2023-06-19 12:07:15


一种数据解析方法、装置、计算机设备和存储介质

技术领域

本发明实施例涉及数据处理技术,尤其涉及一种数据解析方法、装置、计算机设备和存储介质。

背景技术

在互联网浪潮中,各种应用操作下产生了大量的数据,各种数据携带了大量的信息,而且每种数据携带的部分信息可能相同或者相关联。

根据应用的业务发展的需求,需要解析业务数据,并根据业务数据中需要的业务信息生成结构化的数据,从而对结构化的数据进行数据分析,实现应用的优化。但是现有技术中,在海量业务数据的场景下,对大量数据进行解析,并获取想要的数据进行结构化,对数据处理能力提出了较高的要求,数据处理效率较低,容易造成数据堆积阻塞,无法满足业务数据的分析需求。

发明内容

本发明实施例提供一种数据解析方法、装置、计算机设备和存储介质,以实现快速对批量数据进行解析、合并和存储。

第一方面,本发明实施例提供了一种数据解析方法,该方法包括:

在待处理文件对应的线程下对待处理文件进行解析,对待处理文件中的每行数据生成当前业务对象,将待处理文件对应的各当前业务对象保存到对象集合中;

采用多线程根据索引对象,对对象集合中的各当前业务对象进行合并;其中,索引对象包括需要进行合并的当前业务对象的关键字段;

采用多线程将各当前业务对象与业务数据库中的历史业务对象进行合并,并将各当前业务对象进行存储。

第二方面,本发明实施例还提供了一种数据解析装置,该装置包括:

当前业务对象生成模块,用于在待处理文件对应的线程下对待处理文件进行解析,对待处理文件中的每行数据生成当前业务对象,将待处理文件对应的各当前业务对象保存到对象集合中;

当前业务对象合并模块,用于采用多线程根据索引对象,对对象集合中的各当前业务对象进行合并;其中,索引对象包括需要进行合并的当前业务对象的关键字段;

历史业务对象合并模块,用于采用多线程将各当前业务对象与业务数据库中的历史业务对象进行合并,并将各当前业务对象进行存储。

第三方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明实施例中任一所述的数据解析方法。

第四方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如本发明实施例中任一所述的数据解析方法。

本发明实施例通过对每个待处理文件对应一个线程,在待处理文件对应的线程下解析待处理文件,对待处理文件的每行数据生成一个当前业务对象,将各业务对象保存到对象集合中,再通过多线程,根据索引对象对对象集合中的各个当前业务对象进行合并,并通过多线程将当前业务对象与业务数据库中的历史业务对象进行合并,将各当前业务对象和索引对象保存到业务数据库中。解决了现有技术中在海量数据场景下数据处理效率低,容易造成数据堆积阻塞,无法满足业务数据分析需求的问题,实现了快速对批量数据进行解析、合并和存储。

附图说明

图1是本发明实施例一中的一种数据解析方法的流程图;

图2是本发明实施例二中的一种数据解析方法的流程图;

图3是本发明实施例三中的一种数据解析装置的结构示意图;

图4是本发明实施例四中的一种计算机设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1是本发明实施例一提供的一种数据解析方法的流程图,本实施例可适用于在批量数据中提取相关联的业务数据的情况,该方法可以由数据解析装置来执行,该装置可以由软件和/或硬件来实现,并一般集成在计算机设备中。

如图1所示,本发明实施例的技术方案,具体包括如下步骤:

S110、在待处理文件对应的线程下对待处理文件进行解析,对待处理文件中的每行数据生成当前业务对象,将待处理文件对应的各当前业务对象保存到对象集合中。

其中,待处理文件是需要进行数据解析的文件,待处理文件与线程一一对应,对每个待处理文件创建一个线程,可以提高对待处理文件的数据解析效率。

可选的,在待处理文件对应的线程下对待处理文件进行解析之前,还包括:获取当前文件压缩包,对当前文件压缩包进行解压缩,将解压缩后生成的各文件作为待处理文件;在将各当前业务对象进行存储之后,还包括:将当前文件压缩包存储到日志数据库中。

在本发明实施例中,获取的源文件是压缩包形式,对获取的当前文件压缩包解压缩后,将解压缩后获得的各文件作为待处理文件进行解析。在对待处理文件处理完毕之后,将当前文件压缩包存储到日志数据库中进行备份,以供后续其他业务处理需要。

当前业务对象是对待处理文件中的每行数据按照日志数据格式进行解析,从而生成的对象,待处理文件可以对应多个当前业务对象。

对象集合用于存储各个线程对各待处理文件进行解析后生成的各当前业务对象,在本发明实施例中,待处理文件与线程一一对应,各个线程分别对其对应的待处理文件按行解析数据,对每行数据按照日志数据格式进行解析生成当前业务对象,各线程分别将生成的当前业务对象保存到对象集合中。在本发明实施例中,将所有当前业务对象都保存到对象集合中,可以通过合并对象集合中可合并的业务对象,减少和数据库的交互次数,从而提高数据处理的能力和速度。

S120、采用多线程根据索引对象,对对象集合中的各当前业务对象进行合并;其中,索引对象包括需要进行合并的当前业务对象的关键字段。

索引对象可以预先生成,获取对象集合之后,对对象集合中需要进行合并的当前业务对象,确定其合并时所需的关键字段,并将关键字段作为字段值保存到索引对象中。通过索引对象,可以确定关键字段存在关联性的当前业务对象。其中,关键字段可以为一个或多个,本实施例对此不进行限制。

在本发明实施例中,采用多个线程分别对多个待处理文件进行解析,获取当前业务对象,线程与待处理文件一一对应。在多个线程分别将当前业务对象保存到对象集合中之后,同样采用多个线程对对象集合中的当前业务对象进行合并,本实施例对进行当前业务对象合并的线程的数量不进行限制,可以根据计算机的数据处理能力进行配置。

可选的,可以采用java多线程contdownlatch,并行处理对象集合中的当前业务对象。Contdownlatch是一个同步工具类,它允许一个或多个线程一直等待直到其他线程执行完毕,但本实施例对采用的同步工具不进行限制。

可选的,可以使用ES(Elasticsearch,弹性搜索)搜索引擎,对对象集合中关键字段存在关联的当前业务对象进行查询,但本实施例对采用的搜索引擎不进行限制。

S130、采用多线程将各当前业务对象与业务数据库中的历史业务对象进行合并,并将各当前业务对象进行存储。

在本发明实施例中,在将各当前业务对象存储到业务数据库之前,首先确定业务数据库中是否存储有与当前业务对象匹配的历史业务对象,当存在历史业务对象时,将历史业务对象对应的各字段值,和与历史业务对象匹配的当前业务对象的各字段值进行匹配,将历史业务对象相比于当前业务对象多出的字段值,保存到当前业务对象中。这样设置可以保证当前业务对象中对应的业务信息不仅为最新更新的信息,并且还能保证业务信息的全面性。

同样,本实施例对进行历史业务对象和当前业务对象合并的线程的数量不进行限制,可以根据计算机的数据处理能力进行配置。

在本发明实施例中,对待处理文件进行解析生成当前业务对象、对对象集合中的各个当前业务对象进行合并以及对历史业务对象和当前业务对象合并的过程,都采用多线程的方式进行,可以提高数据处理的效率,防止海量数据场景下对数据进行解析合并和存储时,出现数据堆积阻塞的现象。

本实施例的技术方案,通过对每个待处理文件对应一个线程,在待处理文件对应的线程下解析待处理文件,对待处理文件的每行数据生成一个当前业务对象,将各业务对象保存到对象集合中,再通过多线程,根据索引对象对对象集合中的各个当前业务对象进行合并,并通过多线程将当前业务对象与业务数据库中的历史业务对象进行合并,将各当前业务对象和索引对象保存到业务数据库中。解决了现有技术中在海量数据场景下数据处理效率低,容易造成数据堆积阻塞,无法满足业务数据分析需求的问题,实现了快速对批量数据进行解析、合并和存储。

实施例二

图2是本发明实施例二提供的一种数据解析方法的流程图,本发明实施例在上述实施例的基础上,对根据待处理文件的各行数据生成当前业务对象的过程、根据索引对象进行当前业务对象合并的过程,以及当前业务对象与历史业务对象进行合并的过程进行了进一步的具体化。

相应的,如图2所示,本发明实施例的技术方案,具体包括如下步骤:

S210、判断是否满足压缩包定时获取执行条件,如果是,则执行S220,否则返回执行S210。

满足压缩包定时获取执行条件,可以是每隔预设时间间隔获取一批压缩包,本实施例对具体的时间间隔不进行限制。

S220、判断是否满足历史文件压缩包处理完成条件,如果是,则执行S230,否则返回执行S210。

在本发明实施例中,如果确定对上一批获取的历史文件压缩包,进行解压缩、文件复制之后,对生成的待处理文件按照S110-S130的处理方式处理完毕,并且历史文件压缩包解压缩后的文件存储到日志数据库中,则确定满足历史文件压缩包处理完成条件。

S230、获取当前文件压缩包,对当前文件压缩包进行解压缩,将解压缩后生成的各文件作为待处理文件。

在本发明实施例中,获得的数据为文件压缩包的形式,对获得的当前文件压缩包进行解压缩,将解压缩后的各文件作为待处理文件进行处理。

S240、通过目标线程,对待处理文件中的每行数据分别进行解析,获取与各行数据对应的字段值,根据字段值生成与各行数据对应的当前业务对象。

对每个待处理文件创建一个线程,由目标线程实现待处理文件的解析、当前业务对象的生成和保存。

目标线程对待处理文件中的每行数据,按照日志数据格式进行解析,获取字段值,根据各行数据对应的字段值分别生成当前业务对象。

S250、通过目标线程,将待处理文件对应的各当前业务对象保存到对象集合中。

目标线程对待处理文件的各行数据,分别生成当前业务对象,将各当前业务对象保存到对象集合中。对象集合中存储的是不同的线程对其对应的待处理文件进行解析后,分别生成的当前业务对象。

S260、采用多线程根据索引对象中的关键字段,在所述对象集合中获取与所述关键字段匹配的当前业务对象,并获取当前业务对象的主键信息。

关键字段是需要进行合并的当前业务对象的合并依据,根据关键字段,可以在对象集合中获取关键字段存在关联的各当前业务对象。

主键信息是当前业务对象的唯一标识,主键信息可以用于表示当前业务对象的排序顺序,也即表示当前业务对象对应的行数据在待处理文件中的排序顺序。

由于主键信息可以唯一标识当前业务对象,因此,将关键字段存在关联的各当前业务对象的主键信息,以及关键字段对应存储到索引对象中。根据索引对象,即可关联查询到各个关联的当前业务对象的完整数据,提高了数据搜索的效率。

S270、将当前业务对象的主键信息与关键字段进行对应存储。

S280、采用多线程根据当前业务对象的主键信息,在业务数据库中获取与当前业务对象匹配的历史业务对象,并获取历史业务对象相比于当前业务对象的差异字段值。

差异字段值是指包含在历史业务对象中,但未包含在当前业务对象中的字段值。

根据当前业务对象的主键信息,可以确定业务数据库中是否存在与当前业务对象匹配的历史业务对象。如果存在历史业务对象,则将历史业务对象的字段值与当前业务对象进行比对。将存在于历史业务对象中,但当前业务对象对应的字段值为空的差异字段值存储到当前业务对象中,对于历史业务对象和当前业务对象中字段值都不为空的字段,以当前业务对象的字段值为准。这样设置可以使当前业务对象中包含的字段值更新、更加全面。

S290、将差异字段值存储到与历史业务对象匹配的当前业务对象中。

将差异字段值存储到当前业务对象中,与历史业务对象匹配的字段值为空的字段处,可以保证当前业务对象中数据的全面性和准确性。

S2100、将经过与历史业务对象合并处理后的各当前业务对象以及索引对象,存储到业务数据库中。

在本发明实施例中,经过与历史业务对象合并处理后,各当前业务对象的数据更加完整。根据索引对象,可以快速获得关键字段存在关联的当前业务对象,提高了待处理文件的数据价值,为后续进行业务数据分析提供了便利。

S2110、将当前文件压缩包存储到日志数据库中。

在本发明实施例中,将当前文件压缩包存储到日志数据库中,便于进行数据回溯,同时也可以供后续其他业务需求使用。

本实施例的技术方案,通过每隔一定时间间隔,确定历史压缩包处理完成后,获取当前压缩包进行解压缩,将解压缩后复制得到的文件作为待处理文件,对每个待处理文件对应一个线程,待处理文件对应的目标线程对待处理文件的每行数据生成一个当前业务对象,将各业务对象保存到对象集合中,再通过多线程,根据索引对象中的关键字段,获取对象集合中与关键字段匹配的当前业务对象的主键信息,将各主键信息与关键字段对应存储,通过多线程根据当前业务对象的主键信息,确定业务数据库中匹配的历史业务对象,与当前业务对象进行合并,将各当前业务对象和索引对象保存到业务数据库中。解决了现有技术中在海量数据场景下数据处理效率低,容易造成数据堆积阻塞,无法满足业务数据分析需求的问题,实现了快速对批量数据进行解析、合并和存储。

实施例三

图3是本发明实施例三中的一种数据解析装置的结构示意图,该装置包括:当前业务对象生成模块310、当前业务对象合并模块320以及历史业务对象合并模块330。其中:

当前业务对象生成模块310,用于在待处理文件对应的线程下对待处理文件进行解析,对待处理文件中的每行数据生成当前业务对象,将待处理文件对应的各当前业务对象保存到对象集合中;

当前业务对象合并模块320,用于采用多线程根据索引对象,对对象集合中的各当前业务对象进行合并;其中,索引对象包括需要进行合并的当前业务对象的关键字段;

历史业务对象合并模块330,用于采用多线程将各当前业务对象与业务数据库中的历史业务对象进行合并,并将各当前业务对象进行存储。

本实施例的技术方案,通过对每个待处理文件对应一个线程,在待处理文件对应的线程下解析待处理文件,对待处理文件的每行数据生成一个当前业务对象,将各业务对象保存到对象集合中,再通过多线程,根据索引对象对对象集合中的各个当前业务对象进行合并,并通过多线程将当前业务对象与业务数据库中的历史业务对象进行合并,将各当前业务对象和索引对象保存到业务数据库中。解决了现有技术中在海量数据场景下数据处理效率低,容易造成数据堆积阻塞,无法满足业务数据分析需求的问题,实现了快速对批量数据进行解析、合并和存储。

在上述实施例的基础上,所述装置,还包括:

当前文件压缩包处理模块,用于获取当前文件压缩包,对当前文件压缩包进行解压缩,将解压缩后生成的各文件作为待处理文件;

当前文件压缩包存储模块,用于将当前文件压缩包存储到日志数据库中。

在上述实施例的基础上,当前文件压缩包处理模块,包括:

条件判断单元,用于若判断满足压缩包定时获取执行条件,并且满足历史文件压缩包处理完成条件,则获取当前文件压缩包。

在上述实施例的基础上,当前业务对象生成模块310,包括:

当前业务对象生成单元,用于通过目标线程,对待处理文件中的每行数据分别进行解析,获取与各行数据对应的字段值,根据字段值生成与各行数据对应的当前业务对象;

当前业务对象保存单元,用于通过目标线程,将待处理文件对应的各当前业务对象保存到对象集合中。

在上述实施例的基础上,当前业务对象合并模块320,包括:

主键信息获取单元,用于采用多线程根据索引对象中的关键字段,在所述对象集合中获取与所述关键字段匹配的当前业务对象,并获取当前业务对象的主键信息;

主键信息存储单元,用于将当前业务对象的主键信息与关键字段进行对应存储。

在上述实施例的基础上,历史业务对象合并模块330,包括:

差异字段值获取单元,用于采用多线程根据当前业务对象的主键信息,在业务数据库中获取与当前业务对象匹配的历史业务对象,并获取历史业务对象相比于当前业务对象的差异字段值;

差异字段值存储单元,用于将差异字段值存储到与历史业务对象匹配的当前业务对象中。

在上述实施例的基础上,历史业务对象合并模块330,包括:

对象存储单元,用于将经过与历史业务对象合并处理后的各当前业务对象以及索引对象,存储到业务数据库中。

本发明实施例所提供的数据解析装置可执行本发明任意实施例所提供的数据解析方法,具备执行方法相应的功能模块和有益效果。

实施例四

图4为本发明实施例四提供的一种计算机设备的结构示意图,如图4所示,该计算机设备包括处理器70、存储器71、输入装置72和输出装置73;计算机设备中处理器70的数量可以是一个或多个,图4中以一个处理器70为例;计算机设备中的处理器70、存储器71、输入装置72和输出装置73可以通过总线或其他方式连接,图4中以通过总线连接为例。

存储器71作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据解析方法对应的模块(例如,数据解析装置中的当前业务对象生成模块310、当前业务对象合并模块320以及历史业务对象合并模块33)。处理器70通过运行存储在存储器71中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的数据解析方法。该方法包括:

在待处理文件对应的线程下对待处理文件进行解析,对待处理文件中的每行数据生成当前业务对象,将待处理文件对应的各当前业务对象保存到对象集合中;

采用多线程根据索引对象,对对象集合中的各当前业务对象进行合并;其中,索引对象包括需要进行合并的当前业务对象的关键字段;

采用多线程将各当前业务对象与业务数据库中的历史业务对象进行合并,并将各当前业务对象进行存储。

存储器71可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器71可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器71可进一步包括相对于处理器70远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置72可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置73可包括显示屏等显示设备。

实施例五

本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种数据解析方法,该方法包括:

在待处理文件对应的线程下对待处理文件进行解析,对待处理文件中的每行数据生成当前业务对象,将待处理文件对应的各当前业务对象保存到对象集合中;

采用多线程根据索引对象,对对象集合中的各当前业务对象进行合并;其中,索引对象包括需要进行合并的当前业务对象的关键字段;

采用多线程将各当前业务对象与业务数据库中的历史业务对象进行合并,并将各当前业务对象进行存储。

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据解析方法中的相关操作。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

值得注意的是,上述数据解析装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

相关技术
  • 一种数据解析方法、装置、计算机设备和存储介质
  • 表格数据解析方法、装置、计算机设备及存储介质
技术分类

06120113178109