一种基于Flink的非结构化文件传输方法技术

技术编号:38740551 阅读:24 留言:0更新日期:2023-09-08 23:25
本发明专利技术涉及数据处理技术领域,提供一种基于Flink的非结构化文件传输方法,本发明专利技术的方法包括:读取源文件配置信息,获取文件数量和文件同步执行线程数;根据获取的文件数量和文件同步执行线程数分配文件传输任务;校验目标文件,为通过校验的目标文件创建源文件服务器连接,查询对应的源文件;为查询所得的源文件创建目标文件服务器连接,将目标文件写入对应的目标文件路径下。根据本发明专利技术示例性实施例的基于Flink的非结构化文件传输方法,可以降低部署难度,降低维护难度,提升系统稳定性,避免文件重复传输、重复读写,减少磁盘额外读写消耗,降低整个同步所消耗的时间。降低整个同步所消耗的时间。降低整个同步所消耗的时间。

【技术实现步骤摘要】
一种基于Flink的非结构化文件传输方法


[0001]本专利技术涉及数据处理
,尤其涉及一种基于Flink的非结构化文件传输方法。

技术介绍

[0002]Apache Flink(以下简称Flink)是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。此外,Flink的运行时本身也支持迭代算法的执行。由于Flink具有高吞吐、低延迟且能够以数据并行和流水线方式执行任意流数据程序的特性,被广泛应用的大数据的采集、传输、同步、分析等场景,尤其在结构化数据同步、传输场景中,Flink凭借其优势成为了主流的技术选型方案。
[0003]然而在生产中,往往存在结构化数据和非结构化数据都需要同步的场景,传统的同步方式是将结构化和非结构化数据分别同步,结构化数据通过Flink同步,而非结构化数据往往通过部署第FTP/SFTP工具或者通过FTP/SFTP脚本同步,两个同步过程相互独立,无法做统一管理,且部署FTP/SFTP工具、通过FTP/SFTP脚本等方式都额外增加了系统消耗,额外的消耗也统一增加了整个系统维护难度,降低了系统的稳定性。
[0004]另一方面,目前FTP/SFTP工具针对多个文件传输采用的依旧是单线程队列方式,当需要传输的文件较多时,单线程会降低整个文件传输的效率。此外,目前普遍使用的FTP/SFTP连接同步文件的方式一旦出现异常中断,例如当出现文件不存在、文件路径不正确、网络异常的情况时,都需要从头开始,传输一部分的文件无法断点续传,已经传输完成的文件还需要再次传输,大量消耗了同步时间。
[0005]因此,如何提供一种高效、易维护且支持断点续传的数据传输方法,成为亟待解决的技术问题。

技术实现思路

[0006]有鉴于此,为了克服现有技术的不足,本专利技术旨在提供一种基于Flink的非结构化文件传输方法。
[0007]本专利技术提供一种基于Flink的非结构化文件传输方法,包括:步骤S1:读取源文件配置信息,获取文件数量和文件同步执行线程数;步骤S2:根据获取的文件数量和文件同步执行线程数分配文件传输任务;步骤S3:校验目标文件,为通过校验的目标文件创建源文件服务器连接,查询对应的源文件;步骤S4:为查询所得的源文件创建目标文件服务器连接,将目标文件写入对应的目标文件路径下。
[0008]作为本专利技术的优选,本专利技术基于Flink的非结构化文件传输方法中,步骤S1包括:读取源文件配置信息的文件列表属性和执行线程数属性,根据读取的文件列表属性获取文
件数量,根据读取的执行线程数属性获取文件同步执行线程数。
[0009]作为本专利技术的优选,本专利技术基于Flink的非结构化文件传输方法中,步骤S1还包括:当读取的源文件配置信息不合法,结束文件传输。
[0010]作为本专利技术的优选,本专利技术基于Flink的非结构化文件传输方法中,步骤S2包括:为每个文件同步执行线程分配相同的传输任务,将剩余的传输任务全部分配给剩余文件执行线程。
[0011]作为本专利技术的优选,本专利技术基于Flink的非结构化文件传输方法中,步骤S2中,每个文件同步执行线程分配的传输任务的数量按以下方式获得:获取文件数量与文件同步执行线程数的比值,对所述比值向下取整,将取整后的数值作为每个文件同步执行线程分配的传输任务的数量。
[0012]作为本专利技术的优选,本专利技术基于Flink的非结构化文件传输方法中,步骤S3包括:校验目标文件的配置信息与源文件配置信息是否存在相同的文件id配置,当存在相同的文件id配置,判定所述目标文件通过校验,当不存在相同的文件id配置,结束所述目标文件对应的文件传输;为通过校验的目标文件创建源文件服务器连接,当源文件服务器连接创建成功,通过所述源文件服务器连接查询源文件服务器上是否存在对应的源文件,当源文件服务器上不存在对应的源文件,结束所述目标文件对应的文件传输;当源文件服务器连接创建失败,保存错误信息到日志文件,结束所述目标文件对应的文件传输。
[0013]作为本专利技术的优选,本专利技术基于Flink的非结构化文件传输方法中,步骤S3中的源文件服务器连接包括FTP连接或SFTP连接。
[0014]作为本专利技术的优选,本专利技术基于Flink的非结构化文件传输方法中,步骤S4包括:为查询所得的源文件创建目标文件服务器连接,当目标文件服务器连接创建成功,通过所述目标文件服务器连接根据目标文件的配置信息查询对应的目标文件路径;当目标文件路径不存在时,创建目标文件的目标文件路径并创建目标文件临时文件,通过步骤S3中的源文件服务器连接获取对应的读文件流和写入流,将所述读文件流和写入流写入目标文件临时文件中;当目标文件路径存在时,在所述目标文件路径下查询是否存在对应的目标文件临时文件,所述目标文件临时文件以目标文件名命名,以.temp为后缀;当所述目标文件路径下不存在对应的目标文件临时文件,创建目标文件临时文件,通过步骤S3中的源文件服务器连接获取对应的读文件流和写入流,将所述读文件流和写入流写入目标文件临时文件中;当所述目标文件路径下存在对应的目标文件临时文件,获取所述目标文件临时文件的缓存大小,将读文件流跳过对应的缓存大小后与写文件流写入目标文件临时文件中;将目标文件临时文件的文件名称修改为目标文件的文件名称,当所述目标文件路径下已经存在目标文件,则对已经存在的目标文件进行覆盖;将写入的目标文件的文件id配置保存至全局缓存checkpoint中,直至所有分配到线程的任务执行完成后,清除该任务的checkpoint信息,将任务状态标记为已完成。
[0015]作为本专利技术的优选,本专利技术基于Flink的非结构化文件传输方法,还包括:当文件
传输发生异常,重启文件传输任务,并在分配传输任务时读取全局缓存checkpoint,如果传输文件的文件id配置已经存在全局缓存checkpoint中,跳过所述传输文件的传输。
[0016]最后,本专利技术还提供一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述基于Flink的非结构化文件传输方法的步骤。
[0017]本专利技术基于Flink的非结构化文件传输方法,具有以下有益效果:1.用户在数据同步的场景中面对非结构化数据时,也可以使用Flink工具完成,减少了用户额外针对非结构化文件同步场景的额外系统消耗,降低部署难度,降低维护难度,提升系统稳定性。
[0018]2.支持多线程传输,并基于文件数量和线程执行数量分配每个线程需要传输的文件数量,提高传输的效率,相较于单线程的传输,降低了整个同步所消耗的时间。
[0019]3.当文件传输过程中出现主机宕机、网络中断等系统异常时,通过checkpoint机制可以使传输进度恢复到异常前的进度并继续之前的任务。而对于正在写入过程中中断的文件,会跳过已经写入的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Flink的非结构化文件传输方法,其特征在于,所述方法包括:步骤S1:读取源文件配置信息,获取文件数量和文件同步执行线程数;步骤S2:根据获取的文件数量和文件同步执行线程数分配文件传输任务;步骤S3:校验目标文件,为通过校验的目标文件创建源文件服务器连接,查询对应的源文件;步骤S4:为查询所得的源文件创建目标文件服务器连接,将目标文件写入对应的目标文件路径下。2.根据权利要求1所述的基于Flink的非结构化文件传输方法,其特征在于,步骤S1包括:读取源文件配置信息的文件列表属性和执行线程数属性,根据读取的文件列表属性获取文件数量,根据读取的执行线程数属性获取文件同步执行线程数。3.根据权利要求1所述的基于Flink的非结构化文件传输方法,其特征在于,步骤S1还包括:当读取的源文件配置信息不合法,结束文件传输。4.根据权利要求1所述的基于Flink的非结构化文件传输方法,其特征在于,步骤S2包括:为每个文件同步执行线程分配相同的传输任务,将剩余的传输任务全部分配给剩余文件执行线程。5.根据权利要求4所述的基于Flink的非结构化文件传输方法,其特征在于,步骤S2中,每个文件同步执行线程分配的传输任务的数量按以下方式获得:获取文件数量与文件同步执行线程数的比值,对所述比值向下取整,将取整后的数值作为每个文件同步执行线程分配的传输任务的数量。6.根据权利要求1所述的基于Flink的非结构化文件传输方法,其特征在于,步骤S3包括:校验目标文件的配置信息与源文件配置信息是否存在相同的文件id配置,当存在相同的文件id配置,判定所述目标文件通过校验,当不存在相同的文件id配置,结束所述目标文件对应的文件传输;为通过校验的目标文件创建源文件服务器连接,当源文件服务器连接创建成功,通过所述源文件服务器连接查询源文件服务器上是否存在对应的源文件,当源文件服务器上不存在对应的源文件,结束所述目标文件对应的文件传输;当源文件服务器连接创建失败,保存错误信息到日志文件,结束所述目标文件对应的文件传输。7.根据权利要求1所述的基于Flink的非结构...

【专利技术属性】
技术研发人员:何德峰
申请(专利权)人:中电云数智科技有限公司
类型:发明
国别省市:

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

1