[发明专利]提升Spark结构化流文件数据源读取性能方法及装置在审
申请号: | 202011271625.3 | 申请日: | 2020-11-13 |
公开(公告)号: | CN112269765A | 公开(公告)日: | 2021-01-26 |
发明(设计)人: | 周朝卫 | 申请(专利权)人: | 中盈优创资讯科技有限公司 |
主分类号: | G06F16/16 | 分类号: | G06F16/16;G06F16/174 |
代理公司: | 上海嘉蓝专利代理事务所(普通合伙) 31407 | 代理人: | 卢化宇 |
地址: | 201800 上海市嘉定区安*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 提升 spark 结构 文件 数据源 读取 性能 方法 装置 | ||
本发明公开了一种提升Spark Structured Streaming文件数据源读取性能的方法和装置。本发明通过对新增的待监控文件数据源同步生成一份配置其基本信息的元数据文件,在读取每个批次文件时,只需要遍历该元数据文件即可。同时,增加数据清理的逻辑,将已完成处理的文件执行删除或者移动至备份的目录,减少文件数据源目录下的文件数量,提升了读取性能,减少了处理工作量,降低了成本。
技术领域
本发明涉及大数据技术领域,具体涉及一种提升Spark Structured Streaming文件数据源读取性能的方法以及装置。
背景技术
Spark Structured Streaming(Spark结构化流)是用于实时数据处理的大数据计算引擎,可针对海量数据进行计算、分析。
使用Spark Structured Streaming监控文件目录时,目录下的文件会源源不断的增加,由于Spark Structured Streaming在每个批次读取数据时,需要列出目录下的所有文件,以遍历最新的文件进行实时读取。这就带来了以下问题:
(1)、每个批次都需要列出目录下所有文件,如果文件数量非常多,很有可能会导致内存溢出;
(2)、遍历所有文件,成本开销大,降低实时处理的性能;
(3)、当手工清理目录下已经处理完成的文件时,面临无法识别哪些文件已经处理完成的问题。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本发明通过在生成数据源文件的时候,同步生成一份描述文件的基本信息的元数据,存储在专用的元数据文件中。每个批次在读取文件时,只需要遍历该元数据文件即可。同时,增加数据清理的逻辑,将已完成处理的文件执行删除或者移动至备份的目录,减少文件数据源目录下的文件数量,提升了读取性能。
为实现上述目的,提供了如下方案:
一种提升Spark Structured Streaming文件数据源读取性能的方法,其步骤为:
(1)对新增的待监控文件数据源同步生成一份配置其基本信息的元数据文件;
(2)读取存储上一批次任务对应的文件列表以及上一批次任务消费的文件在元数据文件中偏移量的状态文件,在元数据文件中,根据此偏移量,获取待消费的文件列表,进行处理;
(3)读取状态文件列表,根据清理策略对上一批次的文件进行数据清理,并更新状态文件。
进一步的,将上述步骤发布为二进制jar包,在项目中调用,经过开发提交至spark的集群运行。
进一步的,将上述元数据文件和状态文件的路径作为改造过的Spark StructuredStreaming的FileStreamSource数据源类的构造参数来用于读取文件列表;
进一步的,如果清理策略为删除,则删除上一批次对应的数据文件。如果清理策略为移动,则将上一批次对应的已完成处理的文件移动至已设置的目录进行备份;
进一步的,上述生成的元数据文件包括文件名、文件大小、修改时间、文件的状态等基本信息。
本发明还提供一种提升Spark Structured Streaming文件数据源读取性能的装置,包括:
元数据生成模块,用于对新批次的待监控数据源文件同步生成一份元数据文件;
数据源读取模块,用于读取存储上一批次任务对应的文件列表以及上一批次任务消费的文件在元数据文件中偏移量的状态文件,在元数据文件中,根据此偏移量,获取待消费的文件列表,进行处理;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中盈优创资讯科技有限公司,未经中盈优创资讯科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011271625.3/2.html,转载请声明来源钻瓜专利网。