一种海量文本数据处理方法及装置与流程

文档序号:11134172阅读:455来源:国知局
一种海量文本数据处理方法及装置与制造工艺

本发明实施例涉及计算机技术领域,具体涉及一种海量文本数据处理方法及装置。



背景技术:

在处理海量文本数据时,往往需要利用数据库对数据进行抽取、转换、加载(英文全称为Extract-Transform-Load,英文缩写为ETL)。ETL是一种将数据从数据源端经过抽取、转换、加载至目的端的技术可以方便用户从数据源中抽取出所需的数据,经过数据清洗,按照预先定义的格式,加载到目的数据库中。而后,将存储至数据库的数据进行加工处理后的结果数据存储至临时表中,再从临时表导出所述数据。在这一处理过程中,数据需要经过多次落地,流程冗余。此外文本数据需要先导入数据库,导致数据库资源紧张,当数据库中数据量大时程序的执行会消耗大量资源。因此,现有技术的文本数据处理方法存在资源利用率低、效率低的缺陷。



技术实现要素:

本发明实施例提供了一种海量文本数据处理方法及装置,可以不利用数据库实现海量文本数据的存储、处理,提高资源利用率与数据处理效率。

为此,本发明实施例提供如下技术方案:

第一方面,本发明实施例提供了一种海量文本数据处理方法,包括:接收文本数据;根据预先配置的与所述文本数据对应的数据结构提取文本数据;将提取的文本数据以所述数据结构分块存储至对应的分区中;其中,每个分区对应一个或者多个数据块。

可选地,所述根据预先配置的与所述文本数据对应的数据结构提取文本数据包括:获取与所述文本数据对应的配置文件,从所述配置文件中获取与所述文本数据对应的数据结构;根据所述数据结构信息从所述文本数据中提取与所述数据结构匹配的文本数据。

可选地,所述将提取的文本数据以所述数据结构分块存储至对应的分区中包括:获取与所述文本数据对应的分区信息;根据所述分区信息将提取的所述文本数据以所述数据结构存储至对应的分区中。

可选地,所述方法还包括:建立数据索引,所述数据索引保存有数据块与存储地址的对应关系。

可选地,所述方法还包括:响应于数据查询请求,根据所述数据索引保存的数据库与存储地址的对应关系,获取与所述数据查询请求对应的数据。

可选地,所述方法还包括:根据预先设定的输出条件,将存储在所述分区中的文本数据输出到指定文件中。

可选地,所述方法还包括:针对具有同一数据结构的数据块进行排序处理,获取排序后的文本数据。

第一方面,本发明实施例提供了一种海量文本数据处理装置,包括:接收模块,用于接收文本数据;提取模块,用于根据预先配置的与所述文本数据对应的数据结构提取文本数据;存储模块,用于将提取的文本数据以所述数据结构分块存储至对应的分区中;其中,每个分区对应一个或者多个数据块。

可选地,所述提取模块具体用于:获取与所述文本数据对应的配置文件,从所述配置文件中获取与所述文本数据对应的数据结构;根据所述数据结构信息从所述文本数据中提取与所述数据结构匹配的文本数据。

可选地,所述存储模块具体用于:获取与所述文本数据对应的分区信息;根据所述分区信息将提取的所述文本数据以所述数据结构存储至对应的分区中。

可选地,所述装置还包括:索引建立模块,用于建立数据索引,所述数据索引保存有数据块与存储地址的对应关系。

可选地,所述装置还包括:查询模块,用于响应于数据查询请求,根据所述数据索引保存的数据库与存储地址的对应关系,获取与所述数据查询请求对应的数据。

可选地,所述装置还包括:输出模块,用于根据预先设定的输出条件,将存储在所述分区中的文本数据输出到指定文件中。

可选地,所述装置还包括:

排序模块,用于针对具有同一数据结构的数据块进行排序处理,获取排序后的文本数据.

本发明实施例提供海量文本数据处理方法及装置,可以根据预先配置的、与接收的文本数据对应的数据结构提取文本数据,并将提取的文本数据以所述数据结构分块存储至对应的分区中。由此,不利用数据库也可实现海量文本数据的存储、处理,提高资源利用率与数据处理效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例提供的海量文本数据处理方法流程图;

图2为本发明实施例一个应用场景示意图;

图3为本发明另一实施例提供的海量文本数据处理方法流程图;

图4为本发明实施例对文本数据处理的示意图;

图5为本发明实施例分区存储示意图;

图6为本发明实施例数据排序示意图;

图7为本发明实施例数据索引示意图;

图8为本发明一实施例提供的海量文本数据处理装置示意图。

具体实施方式

本发明实施例提供了一种海量文本数据处理方法及装置,可以不利用数据库实现海量文本数据的存储、处理,提高资源利用率与数据处理效率。

为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

下面将结合附图1至附图7对本发明示例性实施例示出的海量文本数据处理方法进行介绍。

参见图1,为本发明一实施例提供的海量文本数据处理方法流程图。如图1所示,可以包括:

S101,接收文本数据。

接收数据发送端发送的文本数据。所述文本数据可以是压缩或者非压缩的结构化文件。若所述文本数据时压缩的结构化文件,可以先对所述文本数据进行解压和/或解密处理。

S102,根据预先配置的与所述文本数据对应的数据结构提取文本数据。

在一种可能的实现方式中,所述根据预先配置的与所述文本数据对应的数据结构提取文本数据包括:获取与所述文本数据对应的配置文件,从所述配置文件中获取与所述文本数据对应的数据结构;根据所述数据结构从所述文本数据中提取与所述数据结构匹配的文本数据。

举例说明,由于接收的文本数据为结构化数据,因此可以根据需求规则预先定义存储所述文本数据的数据结构。其中,需求规则可以根据需要设定。例如,所述数据结构用于描述需要存储所述文本数据的列的名称、字段类型、数据长度等。为了方便理解,可以关系数据库中的数据表(以下简称表)来表示数据的数据结构。但不同于数据库中的表,本发明的“表”对数据没有约束,不需要加载至数据库中。具体实现时,可以预先对要接收的结构化文本数据进行列定义,例如文本数据的每一列对应的字段名称、表示的含义等。举例说明,可以预先根据源文本数据的配置信息对要接收的结构化文本数据进行列定义。其中,所述配置信息用来标识源文本数据(即接收的文本数据)中的数据字段的,应当能区分源文本数据中数据的位置。为了后续处理逻辑的使用方便,针对不同字段定义了列名。之后,可以根据所述列定义创建表以及相应的分区。需要特别说明的是,这里并不是要在数据库中建立实际的表和分区,而是需要维护能够表示数据的数据结构以及分块信息的文件。所述文件可以配置文件的形式而存在。进一步的,还可以包括创建的数据结构包含的列名称与文本数据列名称的对应关系等。在配置好数据结构后,即可以按照所述数据结构提取文本数据相应的数据。这样,即可以完成对接收的文本数据的筛选、过滤操作。

S103,将提取的文本数据以所述数据结构分块存储至对应的分区中。

具体实现时,可以获取与所述文本数据对应的分区信息;根据所述分区信息将提取的所述文本数据以所述数据结构存储至对应的分区中。举例说明,所述分区信息用于描述数据的存储方式,例如将原有大文件分成多个小文件存储,拆分的方式即为分区。分区是为了提取数据方便,可以只在指定分区文件中查询。为了维护的方便,分区可以多层嵌套。举例说明,所述分区信息可以维护在所述配置文件中。所述配置文件不仅保存有取与文本数据对应的数据结构,还保存有与所述文本数据对应的分区信息。为了实现对文本数据的拆分处理,可以将其分成若干个数据块存储,分区信息旨在描述如何将文本数据划分为若干个数据块以及各数据块的存储位置。其中,每个数据块对应一个或多个分区。在本发明中,分区可以磁盘中文件的形式体现。例如,对应银行数据,可以按照一级行、二级行对数据进行分区存储。例如,每个分区对应一个省行的数据。

在利用预先配置的数据结构提取相应的文本数据后,即可以按照预先设置的分区将提取的所述文本数据分块存储到各相应分区中。这样,无需将数据导入数据库,即可以完成对文本数据的接收、筛选、过滤和存储,降低了资源占用,提高了数据处理效率。

在一些实施方式中,本发明提供的方法还可以包括:建立数据索引,所述数据索引保存有数据块与存储地址的对应关系。进一步地,所述方法还包括:响应于数据查询请求,根据所述数据索引保存的数据库与存储地址的对应关系,获取与所述数据查询请求对应的数据。

在一些实施方式中,本发明提供的方法还可以包括:根据预先设定的输出条件,将存储在所述分区中的文本数据输出到指定文件中。

在一些实施方式中,本发明提供的方法还可以包括:针对具有同一数据结构的数据块进行排序处理,获取排序后的文本数据。

参见图2,为本发明一个应用场景示意图。如图2所示,本发明公开了一种海量文本数据处理方法和装置,可以采用文本方式直接处理数据,无需将数据导入数据库。具体实现时,可以将接收到的源数据进行解压、清洗处理后按指定需求规则拆分至磁盘并建立数据索引。为方便指定数据的快速提取,分区以磁盘中文件形式体现,实现不同类型分区的叠加以及分区层级的扩展。在此基础上可直接使用索引对数据进行筛选、导出等操作,不需要将其导入数据库中加工后再导出,节省数据库资源。此外,由于可将数据进行分块、排序、拆分存储至磁盘,实现了文本数据的分块存储。在整个处理过程中还可以使用并行控制来提高内存与CPU使用率,提高文本处理的效率。

下面结合附图2至附图7对其中的具体实现进行详细说明。

参见图3,为本发明实施例一种海量文本数据处理流程图。

S301,对待接收的结构化文本数据进行列定义。

在具体实现时,可以对将要接收的结构化文本数据进行列定义,例如列名称、数据类型、长度等。

S302,接收下传的压缩或非压缩结构化文件。

S303,按照列定义及文件定义建“表”及分区。

即创建了与所述结构化文件对应的数据结构以及分区存储信息。

S304,将文件加载缓存至新建的“表”中并维护数据索引。

其中,参见图4,为对文本数据处理的示意图。当接收到文本数据后,判断是否存在与所述文本数据对应的表(用于描述数据结构)。如果存在,判断需写入列与指定文件列是否一致。如果一致,判断写入表列是否存在。如果存在,读取文本数据的行数据。为了提高数据处理效率,可以先将文本数据保存在缓存中。具体处理时,判断数据量是否大于缓存上限。若不大于,则将行数据存储在缓存中,继续读取行数据。若大于缓存上限,判断所述数据是否存在对应的分区,如果存在,则将数据存储在对应的分区中。如不存在,则将数据输出到指定块中。直到所有数据读取完成。而后,更新表的索引信息,即更新数据索引。具体实现时,表快即每个数据块会根据分区加载至TMP_PATH中,在此过程在清除掉不符合要求的数据,对应路径为:${TABLE_PATH}/${表名}/TMP。当全表加载完成再输出到块目录中,对应路径为:${TABLE_PATH}/${表名}/BLOCK,如果此前表已有过加载则合并。需要说明的是,表加载中如果用户在建表时给定分区实现,则根据分区实现来分块,并将分块信息写入表索引信息中,需要注意的是表分区实现对于已加载过的表无法再次给定。

如图5所示,为分区存储示意图。例如,对应给定表T(对应一种数据结构),包含列A、列B、列C,可以根据列A对表T进行分区。例如,列A分为3个数据块(BLOCK)存储,例如A1、A2、A3。如图4所示,3个数据块分别是A1B1C1数据块、A2B2C2数据块、A3B3C3数据块。其中,${ROOT_PATH}/TABLES/T/BLOCKS用于表明存储路径。

S305,对数据进行排序。

如图6所示,为数据排序示意图。具体实现时,可以按照某一排序列对各数据块进行排序,然后更新数据索引信息。需要说明的是,表排序是针对表块排序,约定对大表采用分区处理,则表中每块数据量均可放入内存,所以排序使用内部排序,堆排序较为稳定,故使用堆排序的方式。其中,排序索引文件将存放在${SORT_INDEX_PATH}/${表名}/INDEX中,该索引对每行记录都将存放长度为60的索引写入,在一行中写入具体如下:LPAD(${列值},20,""))+LPAD(${行起始位置},20,""))+LPAD(${行长},20,""))。对于排序后的数据块文件将存放于${SORT_INDEX_PATH}/${表名}/BLOCK中。需要注意的是,如果已排序的表再次加载则会重新触发该排序过程。

参见图7,为数据索引示意图。在本发明中,可以建立数据索引,所述数据索引保存有数据块与存储地址的对应关系。如图7所示,INDEX即为数据索引,保存了数据块(BLOCK)与各存储地址的对应关系。其中,表T为具有同一数据结构的全部文本数据,将其拆分为两个数据块分别存储。其中,数据块1包含的数据{3│B1│C1,1│B1│C2,2│B1│C3},数据块2包含的数据为{3│B2│C1,1│B2│C2,2│B2│C3}。数据索引(INDEX)记录了各数据块与存储地址的对应关系,如图所示:BLOCK:110X2XY3IJ,以及,BLOCK:210X2XY3IJ均用于表示这种对于关系。其中,分区数据块BlOCKS包含了两个数据块,图7所示的是按照第一列对数据块进行排序后的结果,即数据块1包含的数据排序后为{1│B1│C2,2│B1│C3,3│B1│C1},数据块2包含的数据排序后为{1│B2│C2,2│B2│C3,3│B2│C1}。进一步地,所述方法还包括:响应于数据查询请求,根据所述数据索引保存的数据库与存储地址的对应关系,获取与所述数据查询请求对应的数据。

S306,根据预先设定的输出条件,将存储在所述分区中的文本数据输出到指定文件中。

其中,所述预先设定的输出条件可以包括数据过滤条件、关联条件、输出文本分隔符、字段格式等条件。

需要说明的是,本发明实施例可以应用于各种数据处理系统中,以中行国家外汇管理局数据报送系统为例,数据收集与拆分可以应用本发明的方法。本发明可以直接将源系统文件根据配置进行归依、按照指定的二级行方式进行分块拆分存储,并分别直接按条件导出至指定文件中。节约数据文件库执行sql再导出文件的时间。若使用本发明的方法,处理1616个文件,解压后文件容量为126G,用时约50分钟。而应用现有技术的方法,同样的处理过程使用数据库约需要90分钟。因此,本发明在处理海量文本数据时,极大的节约了处理时间,提高了处理效率。

参见图8,为本发明一实施例提供的海量文本数据处理装置示意图。

一种海量文本数据处理装置800,包括:

接收模块801,用于接收文本数据;

提取模块802,用于根据预先配置的与所述文本数据对应的数据结构提取文本数据;

存储模块803,用于将提取的文本数据以所述数据结构分块存储至对应的分区中;其中,每个分区对应一个数据块。

在一些实施方式中,所述提取模块具体用于:

获取与所述文本数据对应的配置文件,从所述配置文件中获取与所述文本数据对应的数据结构;根据所述数据结构信息从所述文本数据中提取与所述数据结构匹配的文本数据。

在一些实施方式中,所述存储模块具体用于:

获取与所述文本数据对应的分区信息;根据所述分区信息将提取的所述文本数据以所述数据结构存储至对应的分区中。

在一些实施方式中,所述装置还包括:

索引建立模块,用于建立数据索引,所述数据索引保存有数据块与存储地址的对应关系。

在一些实施方式中,所述装置还包括:

查询模块,用于响应于数据查询请求,根据所述数据索引保存的数据库与存储地址的对应关系,获取与所述数据查询请求对应的数据。

在一些实施方式中,所述装置还包括:

输出模块,用于根据预先设定的输出条件,将存储在所述分区中的文本数据输出到指定文件中。

在一些实施方式中,所述装置还包括:

排序模块,用于针对具有同一数据结构的数据块进行排序处理,获取排序后的文本数据。

其中,本发明装置各单元或模块的设置可以参照图1至图6所示的方法而实现,在此不赘述。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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