一种文件的拆分方法、装置及计算机系统与流程

文档序号:21408351发布日期:2020-07-07 14:42阅读:140来源:国知局
一种文件的拆分方法、装置及计算机系统与流程

本发明涉及计算机技术领域,尤其涉及一种文件的拆分方法、装置及计算机系统。



背景技术:

当某一文件过大时,对它进行的存储及读取的效率将会大大降低。为了改善这一问题,可以将过大的文件进行切分。

现有技术中,linux操作系统提供了split命令,可用于对文件进行均等大小的串行拆分。但是该命令只能在单机进行,拆分效率受制于执行该命令的服务器的cpu及内存的状态,只能实现将文件按照均等大小或者固定行数进行的拆分,且难以实现对问题数据进行过滤等操作。同时,如果使用该技术拆分大文件时出现拆分失败的情况时,就必须从头再来,极大地影响对文件的处理效率。此外,该命令不支持个性化的拆分规则,灵活性差。



技术实现要素:

为了解决现有技术的不足,本发明的主要目的在于提供一种文件的拆分方法、装置及计算机系统,以实现根据定制化的拆分规则对文件进行拆分。

为达到上述目的,第一方面本申请提供了一种文件的拆分方法,包括:

获取待拆分的数据文件;

按照预设的拆分规则,将所述数据文件拆分为数据行,所述数据行包括一个或多个字段值;

按照预设的识别规则,识别所述数据行包含的目标字段值;

根据目标字段值与子文件的对应关系,确定所述目标字段值对应的子文件;

将所述数据行写入所述对应的子文件。

在一些实施例中,所述按照预设的拆分规则,将所述数据文件拆分为数据行,所述数据行包括字段值包括:

读取所述数据文件,当识别到第一个预设字符时,确定所述预设字符之前的数据为一个所述数据行;

继续读取所述数据文件,当识别到所述预设字符时,确定所述预设字符与最近的前一个所述预设字符之间的数据为一个数据行。

在一些实施例中,所述按照预设的拆分规则,将所述数据文件拆分为数据行,所述数据行包括一个或多个字段值包括:

根据所述数据行包含的预设分隔符,将所述数据行分割为字段值并将所述字段值存入所述数据行对应的数组。

在一些实施例中,所述方法包括:

获取所述数据文件对应的字段名称与字段值的匹配规则及目标字段名称;

所述按照预设的识别规则,识别所述数据行包含的目标字段值包括:

读取所述数组,根据所述字段名称与字段值的匹配规则,匹配所述目标字段名称对应的所述字段值;

确定对应的所述字段值为所述目标字段值。

在一些实施例中,所述方法包括:

获取所述数据文件对应的数据校验规则;

根据所述数据校验规则对所述字段值进行数据校验;

所述根据目标字段值与子文件的对应关系,确定所述目标字段值对应的子文件包括:

当数据校验通过时,根据目标字段值与子文件的对应关系,确定所述目标字段值对应的子文件。

在一些实施例中,所述方法包括:

当数据校验不通过时,将所述数据行存入错误文件。

第二方面,本申请公开了一种文件的拆分方法,所述方法包括:

大数据处理平台从文件服务器获取待拆分的数据文件;

大数据处理平台按照预设的拆分规则,将所述数据文件拆分为数据行,所述数据行包括一个或多个字段值;

大数据处理平台按照预设的识别规则,识别所述数据行包含的目标字段值;

大数据处理平台根据目标字段值与子文件的对应关系,确定所述目标字段值对应的子文件,并将所述数据行写入所述对应的子文件;

大数据处理平台将所述子文件发送至所述文件服务器,以便所述文件服务器存储所述子文件。

第三方面,本申请公开了一种文件的拆分装置,所述装置包括:

获取模块,用于获取待拆分的数据文件;

拆分模块,用于按照预设的拆分规则,将所述数据文件拆分为数据行,所述数据行包括一个或多个字段值;

识别模块,用于按照预设的识别规则,识别所述数据行包含的目标字段值;

存储模块,用于根据目标字段值与子文件的对应关系,确定所述目标字段值对应的子文件,将所述数据行写入所述对应的子文件。

在一些实施例中,所述拆分模块还可用于读取所述数据文件,当识别到第一个预设字符时,确定所述预设字符之前的数据为一个所述数据行;

继续读取所述数据文件,当识别到所述预设字符时,确定所述预设字符与最近的前一个所述预设字符之间的数据为一个数据行。

第四方面,本申请公开了一种计算机系统,所述系统包括:

一个或多个处理器;

以及与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行如下操作:

获取待拆分的数据文件;

按照预设的拆分规则,将所述数据文件拆分为数据行,所述数据行包括一个或多个字段值;

按照预设的识别规则,识别所述数据行包含的目标字段值;

根据目标字段值与子文件的对应关系,确定所述目标字段值对应的子文件;

将所述数据行写入所述对应的子文件。

本发明实现的有益效果为:

本发明公开了一种文件的拆分方法,包括获取待拆分的数据文件;按照预设的拆分规则,将所述数据文件拆分为数据行,所述数据行包括一个或多个字段值;按照预设的识别规则,识别所述数据行包含的目标字段值;根据目标字段值与子文件的对应关系,确定所述目标字段值对应的子文件;将所述数据行写入所述对应的子文件,解决了现有技术中数据文件只能进行均等大小或者固定行数的拆分的技术问题,实现了对拆分结果的个性化需求的支持;

本申请还公开了获取所述数据文件对应的数据校验规则;根据所述数据校验规则对所述字段值进行数据校验;避免下游系统读取生成的子文件时出现数据无法加载的问题,影响工作效率;进一步地可将未通过校验的数据行存入错误文件中,以便后续根据错误文件进行问题的排查,提升了数据效验及问题处理的效率;

本申请还提出了大数据处理平台从文件服务器获取待拆分的数据文件;大数据处理平台按照预设的拆分规则,将所述数据文件拆分为数据行,所述数据行包括一个或多个字段值;大数据处理平台根据所述拆分规则,识别所述字段值对应的子文件并将所述数据行写入所述对应的子文件;大数据处理平台按照预设的识别规则,识别所述数据行包含的目标字段值;大数据处理平台根据目标字段值与子文件的对应关系,确定所述目标字段值对应的子文件,并将所述数据行写入所述对应的子文件;大数据处理平台将所述子文件发送至所述文件服务器,以便所述文件服务器存储所述子文件,基于大数据处理平台可实现对大批量的文件的同时拆分,降低了单机的处理能力对拆分效率的限制,极大提高了拆分的工作效率。

本发明所有产品并不需要具备上述所有效果。

附图说明

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

图1是本申请实施例提供的文件拆分系统架构图;

图2是本申请实施例提供的拆分流程图;

图3是本申请实施例提供的方法流程图;

图4是本申请实施例提供的装置结构图;

图5是本申请实施例提供的计算机系统结构图。

具体实施方式

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

如背景技术所述,linux操作系统提供的split命令不支持个性化的拆分操作,也不能对文件进行数据校验。为解决上述技术问题,本申请搭建了一个文件的拆分系统,如图1所示,包含了配置库、分布式数据存储集群及作业调度系统。可使用oracle、mysql、db2等关系型数据库作为配置库,用于存储待拆分文件及规则文件,规则文件中储存了拆分规则和数据校验规则。拆分规则中包含了数据行的拆分规则及目标字段值的识别规则,数据行的拆分规则包括预设字符、预设分隔符等数据,目标字段值的识别规则包括目标字段名称、字段值与字段名的匹配规则、目标字段值与识别值的对应关系表、每一识别值对应的子文件等数据。

分布式数据存储集群可使用hadoop或hbase等分布式存储架构实现,也可采用传统的非分布式的数据存储方法,包含了文件服务器及拆分作业单元,文件服务器用于存储待拆分文件及拆分生成的文件等数据,拆分作业单元用于进行拆分作业。hbase是一种具有高可靠性、高性能、面向列、可伸缩的分布式存储系统,hadoop是一种分布式系统的基础架构。

拆分作业单元可以使用如mapreduce等大数据处理平台实现,mapreduce是由google公司研究并提出的一种面向大规模数据处理的并行计算模型、框架和平台。使用大数据处理平台进行拆分作业可实现对大批量的文件的同时拆分,以降低单机的处理能力对拆分效率的限制,提高拆分的工作效率。

作业调度系统负责下发拆分作业任务并将生成的文件存储到对应的文件服务器中。

实施例一

以上述系统为例,如图2所示,本申请提供的方法可通过如下步骤实现:

步骤一、作业调度系统将拆分任务下发至拆分作业单元;

拆分作业单元根据任务中指定的文件及拆分规则,分别从文件服务器中调取对应的数据文件及从配置库中获得对应的规则文件。

为了提高拆分效率,分布式数据存储集群中预先存储了规则文件的读取规则,根据所述读取规则可对规则文件内包含的拆分数据文件的拆分规则及数据校验规则进行读取。

步骤二、拆分作业单元将数据文件拆分为数据行,并根据预设分隔符字符将数据行拆分为字段值并存入该数据行对应的数组;

拆分作业单元首先读取所述数据文件,当识别到第一个预设字符时,确定所述预设字符之前的数据为一个所述数据行;然后继续读取所述数据文件,当识别到所述预设字符时,确定所述预设字符与最近的前一个所述预设字符之间的数据为一个数据行。

在划分了数据行之后,拆分作业单元读取每一条数据行,根据数据行内包含的预设分隔符,将数据行划分成一个或多个字段值,并将所述一个或多个字段值存入所述数据行对应的数组。

预设字符可以是换行符等任意的指定的字符,预设分隔符可以是顿号、分号等任意指定的单字符或多字符。

例如,该数据文件记录了交易记录,每一条交易记录包含账号、机构号、交易金额、交易时间这四种字段的字段值。拆分作业单元首先根据换行符,将数据文件拆分为一条条的交易记录,然后读取每一条交易记录,根据其中包含的分号,将一条交易记录其划分成账号、机构号、交易金额、交易时间这四个字段值。

当拆分完某一交易记录的所有的字段值后,将字段值顺序存入该交易记录对应的数组内。

根据预设的字段值与字段名的匹配关系及目标字段名称,拆分作业单元可确定目标字段值。例如,当数据文件的每一数据行中的所有字段名称对应的字段值的排序总是保持不变时,识别规则中可预设数据文件中字段的排序规则作为字段值与字段名称的匹配规则。拆分作业单元根据字段的排序规则,可确定数组内每一字段值对应的字段名称及确定目标字段名称对应的字段值为目标字段值。在完成字段的拆分后,拆分作业单元会根据对应的数据校验规则,对每一数据行的机构号的字段值进行数据校验。校验不通过的字段值对应的数据行将被认为存在数据质量问题,并被保存在指定的错误文件中,供后续进行数据问题的排查;校验通过的字段则继续进行下述的步骤。

步骤三、拆分作业单元根据识别规则中预设的目标字段值与识别值的对应关系表,确定每一目标字段值对应的识别值;拆分规则中包含直接拆分或关联拆分这两种拆分方式。

当拆分规则指定为直接拆分时,识别规则中包含了每一目标字段值对应的识别值或目标字段值经运算后的值对应的识别值。每一识别值对应一个子文件,根据识别值可查找到对应的子文件。例如,目标字段值为机构号,所述识别值代表省份,每一省份对应一个子文件。拆分规则中规定了每一省份对应的所有机构号,拆分作业单元即根据每一数组的字段名称为机构号的字段值,确定每一数组对应的省份,并生成包含该数组的目标字段值及该省份对应的识别值的键值对。所述键值对的键为目标字段值、值为对应的识别值。

当指定为关联拆分时,拆分作业单元则根据所述目标字段值或所述目标字段值经过运算后的值,从关联的规则文件中查询所述目标字段值或所述目标字段值经过运算后的值对应的识别值,并根据每一数组的目标字段值及对应的识别值生成对应的键值对,所述键值对的键为目标字段值、值为对应的识别值。

步骤四、拆分作业单元根据识别规则中预设的识别值与子文件的对应关系,确定每一目标字段值对应的子文件,并将对应的数组存入对应的子文件。

例如,拆分作业单元根据生成的键值对,确定每一目标字段值对应的省份,并查找所述对应的省份对应的子文件,将目标字段值对应的数组写入对应的子文件。

基于上述方法即可实现对文件进行大批量的分布式拆分,极大地提高了拆分效率,并实现了对文件的数据质量的校验,防止出现下游系统接收到无法加载的数据的问题,且实现了拆分规则的定制化与个性化,满足了各种实际业务场景的文件拆分需求。

实施例二

对应上述实施例,本申请提供了一种文件的拆分方法,如图3所示,所述方法包括:

310、获取待拆分的数据文件;

320、按照预设的拆分规则,将所述数据文件拆分为数据行,所述数据行包括一个或多个字段值;

优选的,所述按照预设的拆分规则,将所述数据文件拆分为数据行,所述数据行包括字段值包括:

321、读取所述数据文件,当识别到第一个预设字符时,确定所述预设字符之前的数据为一个所述数据行;

322、继续读取所述数据文件,当识别到所述预设字符时,确定所述预设字符与最近的前一个所述预设字符之间的数据为一个数据行。

优选的,所述按照预设的拆分规则,将所述数据文件拆分为数据行,所述数据行包括一个或多个字段值包括:

323、根据所述数据行包含的预设分隔符,将所述数据行分割为字段值并将所述字段值存入所述数据行对应的数组。

330、按照预设的识别规则,识别所述数据行包含的目标字段值;

优选的,所述方法包括:

331、获取所述数据文件对应的字段名称与字段值的匹配规则及目标字段名称;

所述按照预设的识别规则,识别每一所述数据行包含的目标字段值包括:

332、读取所述数组,根据所述字段名称与字段值的匹配规则,匹配所述目标字段名称对应的字段值;

333、确定所述对应的字段值为所述目标字段值。

340、根据目标字段值与子文件的对应关系,确定所述目标字段值对应的子文件;

350、将所述数据行写入所述对应的子文件。

优选的,所述方法包括:

351、获取所述数据文件对应的数据校验规则;

352、根据所述数据校验规则对所述字段值进行数据校验;

所述根据目标字段值与子文件的对应关系,确定所述目标字段值对应的子文件包括:

353、当数据校验通过时,根据目标字段值与子文件的对应关系,确定所述目标字段值对应的子文件。

优选的,所述方法包括:

354、当数据校验不通过时,将所述数据行存入错误文件。

实施例三

对应上述方法,本申请提供了一种文件的拆分方法,所述方法包括:

610、大数据处理平台从文件服务器获取待拆分的数据文件

优选的,所述方法包括:

620、大数据处理平台按照预设的拆分规则,将所述数据文件拆分为数据行,所述数据行包括一个或多个字段值;

优选的,所述大数据处理平台按照预设的拆分规则,将所述数据文件拆分为数据行,所述数据行包括字段值包括:

621、大数据处理平台读取所述数据文件,当识别到第一个预设字符时,确定所述预设字符之前的数据为一个所述数据行;

622、大数据处理平台继续读取所述数据文件,当识别到所述预设字符时,确定所述预设字符与最近的前一个所述预设字符之间的数据为一个数据行。

优选的,所述大数据处理平台按照预设的拆分规则,将所述数据文件拆分为数据行,所述数据行包括字段值值包括:

623、大数据处理平台根据所述数据行包含的预设分隔符,将所述数据行分割为字段值并将所述字段值存入所述数据行对应的数组。

630、大数据处理平台按照预设的识别规则,识别所述数据行包含的目标字段值;

优选的,所述方法包括:

631、大数据处理平台获取所述数据文件对应的字段名称与字段值的匹配规则及目标字段名称;

所述大数据处理平台按照预设的识别规则,识别所述数据行包含的目标字段值包括:

632、大数据处理平台读取所述数组,根据所述字段名称与字段值的匹配规则,匹配所述目标字段名称对应的字段值;

633、大数据处理平台确定所述对应的字段值为所述目标字段值。

640、大数据处理平台根据目标字段值与子文件的对应关系,确定所述目标字段值对应的子文件;

650、大数据处理平台将所述数据行写入所述对应的子文件。

优选的,所述方法包括:

651、大数据处理平台获取所述数据文件对应的数据校验规则;

652、大数据处理平台根据所述数据校验规则对所述字段值进行数据校验;

所述大数据处理平台根据目标字段值与子文件的对应关系,确定所述目标字段值对应的子文件包括:

653、当数据校验通过时,大数据处理平台根据目标字段值与子文件的对应关系,确定所述目标字段值对应的子文件。

优选的,所述方法包括:

654、当数据校验不通过时,将所述数据行存入错误文件。

660、大数据处理平台将所述子文件发送至所述文件服务器,以便所述文件服务器存储所述子文件。

优选的,所述方法包括:

661、大数据处理平台将所述错误文件发送至所述文件服务器,以便所述文件服务器存储所述错误文件。

实施例四

对应上述所有方法实施例,本申请提供了一种文件的拆分装置,如图4所示,所述装置包括:

获取模块410,用于获取待拆分的数据文件;

拆分模块420,用于按照预设的拆分方法,将所述数据文件拆分为数据行,所述数据行包括一个或多个字段值;

识别模块430,用于按照预设的识别规则,识别所述数据行包含的目标字段值;

存储模块440,用于根据目标字段值与子文件的对应关系,确定所述目标字段值对应的子文件,将所述数据行存入所述对应的子文件。

优选的,所述拆分模块420还可用于读取所述数据文件,当识别到第一个预设字符时,确定所述预设字符之前的数据为一个所述数据行;继续读取所述数据文件,当识别到所述预设字符时,确定所述预设字符与最近的前一个所述预设字符之间的数据为一个数据行。

优选的,所述拆分模块420还可用于根据所述数据行包含的预设分隔符,将所述数据行分割为字段值并将所述字段值存入所述数据行对应的数组。

优选的,所述获取模块410还可用于获取所述数据文件对应的字段名称与字段值的匹配规则及目标字段名称;所述识别模块430还可用于读取所述数组,根据所述字段名称与字段值的匹配规则,匹配所述目标字段名称对应的所述字段值;确定对应的所述字段值为所述目标字段值。

优选的,所述装置还包括数据校验模块450,所述获取模块410还可用于获取所述数据文件对应的数据校验规则;所述数据校验模块450用于根据所述数据校验规则对所述字段值进行数据校验;所述存储模块440还可用于当数据校验通过时,根据目标字段值与子文件的对应关系,确定所述目标字段值对应的子文件。

优选的,所述存储模块440还可用于当数据校验不通过时,将所述数据行存入错误文件。

实施例五

对应上述方法、设备及系统,本申请实施例五提供一种计算机系统,包括:一个或多个处理器;以及与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行如下操作:

获取待拆分的数据文件;

按照预设的拆分规则,将所述数据文件拆分为数据行,所述数据行包括一个或多个字段值;

按照预设的识别规则,识别所述数据行包含的目标字段值;

根据目标字段值与子文件的对应关系,确定所述目标字段值对应的子文件;

将所述数据行写入所述对应的子文件。

其中,图5示例性的展示出了计算机系统的架构,具体可以包括处理器1510,视频显示适配器1511,磁盘驱动器1512,输入/输出接口1513,网络接口1514,以及存储器1520。上述处理器1510、视频显示适配器1511、磁盘驱动器1512、输入/输出接口1513、网络接口1514,与存储器1520之间可以通过通信总线1530进行通信连接。

其中,处理器1510可以采用通用的cpu(centralprocessingunit,中央处理器)、微处理器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请所提供的技术方案。

存储器1520可以采用rom(readonlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1520可以存储用于控制计算机系统1500运行的操作系统1521,用于控制计算机系统1500的低级别操作的基本输入输出系统(bios)。另外,还可以存储网页浏览器1523,数据存储管理系统1524,以及图标字体处理系统1525等等。上述图标字体处理系统1525就可以是本申请实施例中具体实现前述各步骤操作的应用程序。总之,在通过软件或者固件来实现本申请所提供的技术方案时,相关的程序代码保存在存储器1520中,并由处理器1510来调用执行。输入/输出接口1513用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。

网络接口1514用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。

总线1530包括一通路,在设备的各个组件(例如处理器1510、视频显示适配器1511、磁盘驱动器1512、输入/输出接口1513、网络接口1514,与存储器1520)之间传输信息。

另外,该计算机系统1500还可以从虚拟资源对象领取条件信息数据库1541中获得具体领取条件的信息,以用于进行条件判断,等等。

需要说明的是,尽管上述设备仅示出了处理器1510、视频显示适配器1511、磁盘驱动器1512、输入/输出接口1513、网络接口1514,存储器1520,总线1530等,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本申请方案所必需的组件,而不必包含图中所示的全部组件。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,云服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

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

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