【技术实现步骤摘要】
多线程数据文件处理方法、设备和介质
[0001]本公开的实施例总体涉及文件处理领域,并且更具体地涉及一种多线程数据文件处理方法、设备和介质。
技术介绍
[0002]在用计算机进行诸如数据采集、数据准备和数据迁移等(尤其是涉及金融领域数据的数据采集、数据准备和数据迁移等)的过程中,经常需要对相关的数据文件进行一定的处理。例如,对于包含敏感数据的数据文件,需要将该数据文件加密保存在特殊介质上后再物理提交到指定的数据采集点。另外,在需要将来自不同数据源的各种数据文件保存到某个数据库中时,由于这些数据文件的格式(例如输出格式)和大小通常各不相同,因此需要对这些数据文件进行一定的数据格式处理和加工后才能最终入库。
[0003]目前,通常使用Linux环境下的awk文件处理工具或者Windows环境下的诸如UltraEdit之类的文本分析器来对待处理数据文件进行处理,这些工具都是将待处理数据文件中包括的记录按行的顺序读入计算设备,并逐行对其进行处理。例如,awk文件处理工具,该工具工作顺序为读入待处理数据文件的当前行记录,利用分隔符(默认为空格)对当前行记录进行字段分解以得到该行记录的多个字段(也称为域),然后对各字段进行处理以得到所需结果,并在当前行记录处理完之后再读入待处理数据文件的下一行记录并按相同的方法对该行记录进行处理,直至该待处理数据文件的所有行均被处理完毕为止。由此可见,awk工具是串行文件处理工具,而无法并行处理数据文件,其对大数据文件的处理效率尤其低下。因此,这些现有的文件处理工具所采用的文件处理方法效 ...
【技术保护点】
【技术特征摘要】
1.一种多线程数据文件处理方法,包括:响应于接收到对包括多行记录的待处理数据文件执行处理任务的操作请求,启动主线程,所述主线程被配置为在被启动后执行以下操作:基于机器性能确定文件切片大小以及最大空闲任务线程数;基于所述文件切片大小为所述待处理数据文件逐个地生成文件切片节点,以供添加到待处理切片节点列表中;如果确定线程池存在一个或多个空闲任务线程,将所述待处理切片节点列表中接下来待处理的一个或多个文件切片节点分别分派给所述一个或多个空闲任务线程,以启动所述一个或多个空闲任务线程来分别对所分派的相应文件切片节点执行所述处理任务,每一任务线程在完成所述处理任务后由线程池回收为空闲任务线程,所述一个或多个空闲任务线程的数目小于或等于所述最大空闲任务线程数。2.根据权利要求1所述的多线程数据文件处理方法,其中每一任务线程被配置为在被启动后执行以下操作:加载所述处理任务;对所分派的相应文件切片节点中包括的记录执行所述处理任务;在对所分派的相应文件切片节点所包括的所有记录都完成所述处理任务后,将所得到的处理结果整合成一个字符串写入所分派的相应文件切片节点中。3.根据权利要求1所述的多线程数据文件处理方法,其中基于所述文件切片大小为所述待处理数据文件逐个地生成文件切片节点包括:根据预先定义的头切片节点行数,为所述待处理数据文件生成首个文件切片节点;基于所述首个文件切片节点的平均行字节数和所述文件切片大小确定文件切片行数;如果检测到内存占用率小于预定阈值,则根据所述文件切片行数,为所述待处理数据文件逐个地生成后续文件切片节点。4.根据权利要求3所述的多线程数据文件处理方法,基于所述文件切片大小为所述待处理数据文件逐个地生成文件切片节点还包括:如果检测到内存占用率大于或等于所述预定阈值,则等待直到检测到内存占用率回升到大于所述预定阈值为止。5.根据权利要求1所述的多线程数据文件处理方法,还包括在启动所述主线程的同时,还启动合并节点线程,所述合并节点线程被配置为在被启动后执行以下操作:周期性地检查所述待处理切片节点列表的第一个文件切片节点是否已被处理完毕;响应于确定所述第一个文件切片节点已被处理完毕,根据所述第一个文件切片节点中的处理结果的类型将所述处理结果写入相应的结果文件;在所述第一个文件切片节点中的处理结果已被写入相应的结果文件中之后,从所述待处理切片节点列表中删除所述第一个文件切片节点。6.根据权利要求5所述的多线程数据文件处理方法,其中每一文件切片节点的处理结果为正常处理结果、异常处理结果和修复处理结果之一,所述结果文件包括正常处理结果文件、异常处理结果文件以及修复处理结果文件,并且根据所述第一个文件切片节点中的处理结果的类型将所述处理结果写入相应的结果文件包括:如果所述处理结果属于正常处理结果,则将所述处理结果写入相应的正常处理结果文
件;如果所述处理结果属于异常处理结果,则将所述处理结果写入相应的异常处理结果文件;如果所述处理结果属于修复处理结果,则将所述处理结果...
【专利技术属性】
技术研发人员:王佳,
申请(专利权)人:中国建设银行股份有限公司上海市分行,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。