一种基于ETL的文件处理方法及系统技术方案

技术编号:14736812 阅读:78 留言:0更新日期:2017-03-01 10:09
本申请实施例提供了一种基于ETL的文件处理方法及系统,其中所述方法包括:从源端获取多个文件对象;针对每个文件对象,进行文件内的数据切分,得到多个文本数据块;当所述多个文件对象切分完成后,将所述多个文件对象对应的所有文本数据块并发写入目的端。本发明专利技术可以提高ETL过程中文件同步的速度,最大化数据同步效率。

【技术实现步骤摘要】

本申请涉及数据处理
,特别是涉及一种基于ETL的文件处理方法,以及一种基于ETL的文件处理系统。
技术介绍
随着企业信息化建设的发展,越来越多的企业建立了众多的信息系统,以帮助企业进行内外部业务的处理和管理工作。但是随着信息系统的增加,各自孤立工作的信息系统造成了大量的冗余数据和业务人员的重复劳动。企业应用集成(EAI,EnterpriseApplicationIntegration)应运而生,而ETL是实现数据集成的主要技术。ETL,Extraction-Transformation-Loading的缩写,即数据抽取(Extract)、转换(Transform)、加载(Load)的过程,它是构建数据仓库的重要环节。ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。目前,针对文件系统的同步工具如同步盘类应用,是以文件为单位,主要完成各个终端间的文件到文件的同步,并不适应数据仓库ETL的需要。因此,目前需要本领域技术人员迫切解决的一个技术问题就是:如何提出一种基于ETL的文件处理机制,用以提高ETL过程中文件同步的速度,最大化数据同步效率。
技术实现思路
本申请实施例所要解决的技术问题是提供一种基于ETL的文件处理方法,用以提高ETL过程中文件同步的速度,最大化数据同步效率。相应的,本申请实施例还提供了一种基于ETL的文件处理系统,用以保证上述方法的实现及应用。为了解决上述问题,本申请实施例公开了一种基于ETL的文件处理方法,所述的方法包括:从源端获取多个文件对象;针对每个文件对象,进行文件内的数据切分,得到多个文本数据块;当所述多个文件对象切分完成后,将所述多个文件对象对应的所有文本数据块并发写入目的端。优选地,所述从源端获取多个文件对象的步骤包括:从源端读取结构化信息,所述结构化信息包括多个文件对象;将所述结构化信息以单个文件对象为单位进行切分,得到多个文件对象。优选地,所述针对每个文件对象,进行文件内的数据切分,得到多个文本数据块的步骤包括:针对每个文件对象,确定多个切分位置;按照所述多个切分位置对所述文件对象进行切分,得到多个文本数据块。优选地,所述文件对象包括多个行数据记录,所述针对每个文件对象,确定多个切分位置的步骤包括:针对每个文件对象,获取所述文件对象的大小;确定所述行数据记录的平均大小;计算所述文件对象大小与所述行数据记录的平均大小的商值,得到所述行数据记录的数量;计算预设的文本数据块的数量与所述行数据记录的数量的商值,得到每个文本数据块所拥有的行数据记录的数量;依据所述文本数据块所具有的行数据记录的数量,确定所述文件对象的多个初始切分位置;若所述初始切分位置不是行分隔符所在的位置,则将所述切分位置调整为行分隔符所在的位置;对所述调整后的初始切分位置进行去重处理,得到多个切分位置。优选地,所述若所述初始切分位置不是行分隔符所在的位置,则将所述切分位置调整为行分隔符所在的位置的步骤包括:若所述初始切分位置不是行分隔符所在的位置,则向前探测或向后回退到与所述初始切分位置最接近的行分隔符的位置;将所述切分位置确定为所述最接近的行分隔符的位置。优选地,所述确定所述行数据记录的平均大小的步骤包括:将第一个行数据记录的大小作为所述行数据记录的平均大小;或者,将最后一个行数据记录的大小作为所述行数据记录的平均大小;或者,随机选取一个行数据记录的大小作为所述行数据记录的平均大小;或者,计算前N行的行数据记录的大小平均值作为所述行数据记录的平均大小。优选地,所述当所述多个文件对象切分完成后,将所述多个文件对象对应的所有文本数据块文本数据块并发写入目的端的步骤包括:当所述多个文件对象切分完成后,分别将所述文本数据块的格式转换为中间态格式;采用多线程或者多进程或者分布式多机分别将对应的中间态格式的文本数据块写入目的端;在所述目的端中,将所述中间态的文本数据块转换为所述目的端所需的格式。优选地,所述文本数据块包括一条或多条行数据记录,所述行数据记录包括列分隔符,所述当所述多个文件对象切分完成后,分别将所述文本数据块的格式转换为中间态格式的步骤包括:当所述多个文件对象切分完成后,针对每个文本数据块的每条行数据记录,按照所述列分隔符进行切割,得到一个或多个列记录;分别为所述列记录添加对应的预设数据类型,得到所述中间态格式。优选地,所述预设数据类型至少包括如下类型的一种或多种:字符串STRING,长整型LONG,布尔型BOOLEAN,双精度浮点型DOUBLE,日期DATE。优选地,所述方法还包括:若所述文本数据块的格式转换所述中间态格式不成功,或者,所述中间态的文本数据块转换所述目的端所需的格式不成功,则产生脏数据;若所述脏数据超出预设阈值,则生成错误报告。优选地,所述文件对象为能够进行随机读写的文件对象,所述文件对象至少可以包括如下对象的一种或多种:本地文件、开放存储服务OSS文件、安全文件传送协议SFTP文件、分布式文件系统HDFS文件。本申请实施例还提供了一种基于ETL的文件处理系统,所述的系统包括:文件对象获取模块,用于从源端获取多个文件对象;文件切分模块,用于针对每个文件对象,进行文件内的数据切分,得到多个文本数据块;写入模块,用于在所述多个文件对象切分完成后,将所述多个文件对象对应的所有文本数据块并发写入目的端。优选地,所述文件对象获取模块包括:结构化信息读取子模块,用于从源端读取结构化信息,所述结构化信息包括多个文件对象;结构化信息切分子模块,用于将所述结构化信息以单个文件对象为单位进行切分,得到多个文件对象。优选地,所述文件切分模块包括:切分位置确定子模块,用于针对每个文件对象,确定多个切分位置;切分子模块,用于按照所述多个切分位置对所述文件对象进行切分,得到多个文本数据块。优选地,所述文件对象包括多个行数据记录,所述切分位置确定子模块包括:文件大小获取单元,用于针对每个文件对象,获取所述文件对象的大小;行大小确定单元,用于确定所述行数据记录的平均大小;第一计算单元,用于计算所述文件对象大小与所述行数据记录的平均大小的商值,得到所述行数据记录的数量;第二计算单元,用于计算预设的文本数据块的数量与所述行数据记录的数量的商值,得到每个文本数据块所拥有的行数据记录的数量;初始切分位置确定单元,用于依据所述文本数据块所具有的行数据记录的数量,确定所述文件对象的多个初始切分位置;调整单元,用于在所述初始切分位置不是行分隔符所在的位置时,则将所述切分位置调整为行分隔符所在的位置;去重单元,用于对所述调整后的初始切分位置进行去重处理,得到多个切分位置。优选地,所述调整单元还用于:若所述初始切分位置不是行分隔符所在的位置,则向前探测或向后回退到与所述初始切分位置最接近的行分隔符的位置;将所述切分位置确定为所述最接近的行分隔符的位置。优选地,所述行大小确定单元还用于:将第一个行数据记录的大小作为所述行数据记录的平均大小;或者,将最后一个行数据记录的大小作为所述行数据记录的平均大小;或者,随机选取一个行数据记录的大小作为所述行数据记录的平均大小;或者,计算前N行的行数据记录的大小平均值作为所述行数据记录本文档来自技高网...
一种<a href="http://www.xjishu.com/zhuanli/55/201510502163.html" title="一种基于ETL的文件处理方法及系统原文来自X技术">基于ETL的文件处理方法及系统</a>

【技术保护点】
一种基于ETL的文件处理方法,其特征在于,所述的方法包括:从源端获取多个文件对象;针对每个文件对象,进行文件内的数据切分,得到多个文本数据块;当所述多个文件对象切分完成后,将所述多个文件对象对应的所有文本数据块并发写入目的端。

【技术特征摘要】
1.一种基于ETL的文件处理方法,其特征在于,所述的方法包括:从源端获取多个文件对象;针对每个文件对象,进行文件内的数据切分,得到多个文本数据块;当所述多个文件对象切分完成后,将所述多个文件对象对应的所有文本数据块并发写入目的端。2.根据权利要求1所述的方法,其特征在于,所述从源端获取多个文件对象的步骤包括:从源端读取结构化信息,所述结构化信息包括多个文件对象;将所述结构化信息以单个文件对象为单位进行切分,得到多个文件对象。3.根据权利要求1或2所述的方法,其特征在于,所述针对每个文件对象,进行文件内的数据切分,得到多个文本数据块的步骤包括:针对每个文件对象,确定多个切分位置;按照所述多个切分位置对所述文件对象进行切分,得到多个文本数据块。4.根据权利要求3所述的方法,其特征在于,所述文件对象包括多个行数据记录,所述针对每个文件对象,确定多个切分位置的步骤包括:针对每个文件对象,获取所述文件对象的大小;确定所述行数据记录的平均大小;计算所述文件对象大小与所述行数据记录的平均大小的商值,得到所述行数据记录的数量;计算预设的文本数据块的数量与所述行数据记录的数量的商值,得到每个文本数据块所拥有的行数据记录的数量;依据所述文本数据块所具有的行数据记录的数量,确定所述文件对象的多个初始切分位置;若所述初始切分位置不是行分隔符所在的位置,则将所述切分位置调整为行分隔符所在的位置;对所述调整后的初始切分位置进行去重处理,得到多个切分位置。5.根据权利要求4所述的方法,其特征在于,所述若所述初始切分位置不是行分隔符所在的位置,则将所述切分位置调整为行分隔符所在的位置的步骤包括:若所述初始切分位置不是行分隔符所在的位置,则向前探测或向后回退到与所述初始切分位置最接近的行分隔符的位置;将所述切分位置确定为所述最接近的行分隔符的位置。6.根据权利要求4所述的方法,其特征在于,所述确定所述行数据记录的平均大小的步骤包括:将第一个行数据记录的大小作为所述行数据记录的平均大小;或者,将最后一个行数据记录的大小作为所述行数据记录的平均大小;或者,随机选取一个行数据记录的大小作为所述行数据记录的平均大小;或者,计算前N行的行数据记录的大小平均值作为所述行数据记录的平均大小。7.根据权利要求1所述的方法,其特征在于,所述当所述多个文件对象切分完成后,将所述多个文件对象对应的所有文本数据块文本数据块并发写入目的端的步骤包括:当所述多个文件对象切分完成后,分别将所述文本数据块的格式转换为中间态格式;采用多线程或者多进程或者分布式多机分别将对应的中间态格式的文本数据块写入目的端;在所述目的端中,将所述中间态的文本数据块转换为所述目的端所需的格式。8.根据权利要求7所述的方法,其特征在于,所述文本数据块包括一条或多条行数据记录,所述行数据记录包括列分隔符,所述当所述多个文件对象切分完成后,分别将所述文本数据块的格式转换为中间态格
\t式的步骤包括:当所述多个文件对象切分完成后,针对每个文本数据块的每条行数据记录,按照所述列分隔符进行切割,得到一个或多个列记录;分别为所述列记录添加对应的预设数据类型,得到所述中间态格式。9.根据权利要求8所述的方法,其特征在于,所述预设数据类型至少包括如下类型的一种或多种:字符串STRING,长整型LONG,布尔型BOOLEAN,双精度浮点型DOUBLE,日期DATE。10.根据权利要求7所述的方法,其特征在于,还包括:若所述文本数据块的格式转换所述中间态格式不成功,或者,所述中间态的文本数据块转换所述目的端所需的格式不成功,则产生脏数据;若所述脏数据超出预设阈值,则生成错误报告。11.根据权利要求1或2或4或5或6或7或8或9所述的方法,其特征在于,所述文件对象为能够进行随机读写的文件对象,所述文件对象至少可以包括如下对象的一种或多种:本地文件、开放存储服务OSS文件、安全文件传送协议SFTP文件、分布式文件系统HDFS文件。12.一种基于ETL的文件处理系统,其特征在于,所述的系统包括:文件对象获...

【专利技术属性】
技术研发人员:罗海伟陈守元
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1