多线程数据文件处理方法、设备和介质技术

技术编号:36804683 阅读:13 留言:0更新日期:2023-03-09 00:07
本公开的实施例涉及多线程数据文件处理方法、设备和介质。根据该方法,响应于接收到对待处理数据文件执行处理任务的操作请求,启动主线程,其中主线程被配置为在被启动后执行以下操作:基于机器性能确定文件切片大小以及最大空闲任务线程数;基于文件切片大小为待处理数据文件逐个地生成文件切片节点,以供添加到待处理切片节点列表中;如果确定线程池存在一个或多个空闲任务线程,将待处理切片节点列表中接下来待处理的一个或多个文件切片节点分别分派给该一个或多个空闲任务线程,以启动该一个或多个空闲任务线程来分别对所分派的相应文件切片节点执行所述处理任务。由此,能够极大地提高对数据文件的处理效率。极大地提高对数据文件的处理效率。极大地提高对数据文件的处理效率。

【技术实现步骤摘要】
多线程数据文件处理方法、设备和介质


[0001]本公开的实施例总体涉及文件处理领域,并且更具体地涉及一种多线程数据文件处理方法、设备和介质。

技术介绍

[0002]在用计算机进行诸如数据采集、数据准备和数据迁移等(尤其是涉及金融领域数据的数据采集、数据准备和数据迁移等)的过程中,经常需要对相关的数据文件进行一定的处理。例如,对于包含敏感数据的数据文件,需要将该数据文件加密保存在特殊介质上后再物理提交到指定的数据采集点。另外,在需要将来自不同数据源的各种数据文件保存到某个数据库中时,由于这些数据文件的格式(例如输出格式)和大小通常各不相同,因此需要对这些数据文件进行一定的数据格式处理和加工后才能最终入库。
[0003]目前,通常使用Linux环境下的awk文件处理工具或者Windows环境下的诸如UltraEdit之类的文本分析器来对待处理数据文件进行处理,这些工具都是将待处理数据文件中包括的记录按行的顺序读入计算设备,并逐行对其进行处理。例如,awk文件处理工具,该工具工作顺序为读入待处理数据文件的当前行记录,利用分隔符(默认为空格)对当前行记录进行字段分解以得到该行记录的多个字段(也称为域),然后对各字段进行处理以得到所需结果,并在当前行记录处理完之后再读入待处理数据文件的下一行记录并按相同的方法对该行记录进行处理,直至该待处理数据文件的所有行均被处理完毕为止。由此可见,awk工具是串行文件处理工具,而无法并行处理数据文件,其对大数据文件的处理效率尤其低下。因此,这些现有的文件处理工具所采用的文件处理方法效率低下,对于例如GB或TB量级的大文件而言尤其如此。
[0004]由此,有必要提供一种文件处理技术,使得有助于以更快的速度完成对文件(尤其是GB或TB或更高量级的大数据文件)的处理。

技术实现思路

[0005]针对上述问题,本公开提供了一种多线程数据文件处理方法、设备和介质,使得能够极大地提高文件(尤其是大数据文件)的处理效率。
[0006]根据本公开的第一方面,提供了一种多线程数据文件处理方法,所述方法包括:响应于接收到对包括多行记录的待处理数据文件执行处理任务的操作请求,启动主线程,所述主线程被配置为在启动后执行以下操作:基于机器性能确定文件切片大小以及最大空闲任务线程数;基于所述文件切片大小为所述待处理数据文件逐个地生成文件切片节点,以供添加到待处理切片节点列表中;如果确定线程池存在一个或多个空闲任务线程,将所述待处理切片节点列表中接下来待处理的一个或多个文件切片节点分别分派给所述一个或多个空闲任务线程,以启动所述一个或多个空闲任务线程来分别对所分派的相应文件切片节点执行所述处理任务,每一任务线程在完成所述处理任务后由线程池回收为空闲任务线程,所述一个或多个空闲任务线程的数目小于或等于所述最大空闲任务线程数。
[0007]根据本公开的第二方面,提供了一种计算设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开的第一方面的多线程数据文件处理方法。
[0008]在本公开的第三方面中,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中所述计算机指令用于使计算机执行本公开的第一方面的多线程数据文件处理方法。
[0009]应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
[0010]结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素。
[0011]图1示出了用于实现根据本专利技术的实施例的多线程数据文件处理方法的系统100的示意图。
[0012]图2示出了根据本公开的实施例的主线程在被启动后所执行的方法200的流程图。
[0013]图3示出了根据本公开的实施例的业务线程在被启动后所执行的方法300的流程图。
[0014]图4示出了根据本公开的实施例的用于为待处理数据文件逐个地生成文件切片节点的方法400的流程图。
[0015]图5示出了根据本公开的实施例的合并节点线程在被启动后所执行的方法500的流程图。
[0016]图6示出了根据本公开的实施例的检查线程在被启动后执行的方法600的流程图。
[0017]图7示出了根据本公开的实施例的电子设备700的框图。
具体实施方式
[0018]以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0019]在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
[0020]如上所述,目前,通常使用Linux环境下的awk文件处理工具或者Windows环境下的诸如UltraEdit之类的文本分析器来对待处理数据文件进行处理,这些工具都是将待处理数据文件中包括的记录按行的顺序读入计算设备,并逐行对其进行处理。例如,awk文件处理工具,该工具工作顺序为读入待处理数据文件的当前行记录,利用分隔符(默认为空格)
对当前行记录进行字段分解以得到该行记录的多个字段(也称为域),然后对各字段进行处理以得到所需结果,并在当前行记录处理完之后再读入待处理数据文件的下一行记录并按相同的方法对该行记录进行处理,直至该待处理数据文件的所有行均被处理完毕为止。因此,这些现有的文件处理工具所采用的文件处理方法效率低下,对于例如GB或TB量级的大文件而言尤其如此。
[0021]为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个,本公开的示例实施例提出了一种多线程数据文件处理方法,所述方法包括:响应于接收到对包括多行记录的待处理数据文件执行处理任务的操作请求,启动主线程,所述主线程被配置为在被启动后执行以下操作:基于机器性能确定文件切片大小以及最大空闲任务线程数;基于所述文件切片大小为所述待处理数据文件逐个地生成文件切片节点,以供添加到待处理切片节点列表中;如果确定线程池存在一个或多个空闲任务线程,将所述待处理切片节点列表中接下来待处理的一个或多个文件切片节点分别分派给所述一个或多个空闲任务线程,以启动所述一个或多个空闲任务线程来分别对所分派的相应文件切片节点执行所述处理任务,每一任务线程在完成所本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多线程数据文件处理方法,包括:响应于接收到对包括多行记录的待处理数据文件执行处理任务的操作请求,启动主线程,所述主线程被配置为在被启动后执行以下操作:基于机器性能确定文件切片大小以及最大空闲任务线程数;基于所述文件切片大小为所述待处理数据文件逐个地生成文件切片节点,以供添加到待处理切片节点列表中;如果确定线程池存在一个或多个空闲任务线程,将所述待处理切片节点列表中接下来待处理的一个或多个文件切片节点分别分派给所述一个或多个空闲任务线程,以启动所述一个或多个空闲任务线程来分别对所分派的相应文件切片节点执行所述处理任务,每一任务线程在完成所述处理任务后由线程池回收为空闲任务线程,所述一个或多个空闲任务线程的数目小于或等于所述最大空闲任务线程数。2.根据权利要求1所述的多线程数据文件处理方法,其中每一任务线程被配置为在被启动后执行以下操作:加载所述处理任务;对所分派的相应文件切片节点中包括的记录执行所述处理任务;在对所分派的相应文件切片节点所包括的所有记录都完成所述处理任务后,将所得到的处理结果整合成一个字符串写入所分派的相应文件切片节点中。3.根据权利要求1所述的多线程数据文件处理方法,其中基于所述文件切片大小为所述待处理数据文件逐个地生成文件切片节点包括:根据预先定义的头切片节点行数,为所述待处理数据文件生成首个文件切片节点;基于所述首个文件切片节点的平均行字节数和所述文件切片大小确定文件切片行数;如果检测到内存占用率小于预定阈值,则根据所述文件切片行数,为所述待处理数据文件逐个地生成后续文件切片节点。4.根据权利要求3所述的多线程数据文件处理方法,基于所述文件切片大小为所述待处理数据文件逐个地生成文件切片节点还包括:如果检测到内存占用率大于或等于所述预定阈值,则等待直到检测到内存占用率回升到大于所述预定阈值为止。5.根据权利要求1所述的多线程数据文件处理方法,还包括在启动所述主线程的同时,还启动合并节点线程,所述合并节点线程被配置为在被启动后执行以下操作:周期性地检查所述待处理切片节点列表的第一个文件切片节点是否已被处理完毕;响应于确定所述第一个文件切片节点已被处理完毕,根据所述第一个文件切片节点中的处理结果的类型将所述处理结果写入相应的结果文件;在所述第一个文件切片节点中的处理结果已被写入相应的结果文件中之后,从所述待处理切片节点列表中删除所述第一个文件切片节点。6.根据权利要求5所述的多线程数据文件处理方法,其中每一文件切片节点的处理结果为正常处理结果、异常处理结果和修复处理结果之一,所述结果文件包括正常处理结果文件、异常处理结果文件以及修复处理结果文件,并且根据所述第一个文件切片节点中的处理结果的类型将所述处理结果写入相应的结果文件包括:如果所述处理结果属于正常处理结果,则将所述处理结果写入相应的正常处理结果文
件;如果所述处理结果属于异常处理结果,则将所述处理结果写入相应的异常处理结果文件;如果所述处理结果属于修复处理结果,则将所述处理结果...

【专利技术属性】
技术研发人员:王佳
申请(专利权)人:中国建设银行股份有限公司上海市分行
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1