大数据与机器学习:实践方法与行业案例.3.2 自动加载的流程

简介:

3.2 自动加载的流程


既然已经明确了数据缓冲区的基本规则,那么我们认为一个满足规则要求的数据缓冲区已经搭建起来了(可以向IT运维人员提出搭建FTP文件服务器的需求),接下来真正进入数据自动加载的设计过程。

首先,仔细分析文件从数据缓冲区自动加载到分析环境中的流程,可以将这个过程细分为4个阶段:扫描文件、下载文件、解压文件和加载文件,如图3-4所示。

 

图3-4 文件自动加载流程分解

这4个阶段的功能描述如下。

1)扫描文件。该阶段用于判断当前数据日期的文件是否已经完整存在于数据缓冲区中,一旦数据文件完整存在(而不是部分)于数据缓冲区,就在数据库中标记该文件已存在。

2)下载文件。将数据库中记录的已经存在(且尚未下载)的文件从数据缓冲区下载到分析环境中。

3)解压文件。在分析环境中,将已经下载完成的数据文件进行解压缩。解压后的文件便于后续的加载操作。

4)加载文件。将解压后的文件批量加载至数据库表中。

上述4个阶段,数据文件会根据处理进程发生状态改变,这个自动加载流程将会涉及12种文件状态,图3-5展示了状态之间的转化。

 

图3-5 文件状态转化图

在扫描文件的开始阶段,处于“文件不存在”状态,一旦程序扫描到该文件,状态就变为“正在传输”,处在这个状态的文件仍处于FTP传输过程中,因此可能不完整。

一旦文件处于“文件就绪”状态,就说明该文件已经完整存在于数据缓冲区,可以进入下载文件阶段。处于“下载成功”状态的文件,可以进入解压文件阶段,而“解压成功”状态的文件将进入加载文件阶段。

3.2.1 扫描文件

通常,生产系统周期性(每月、每天或每小时)产出原始数据,并上传至数据缓冲区。自动加载程序需要及时发现新上传至数据缓冲区中的数据文件,这需要一个程序进程对数据缓冲区的文件目录进行监控,为便于描述,我们称这个监控进程为扫描文件进程。

从图3-5中可知,扫描文件进程需要记录下文件的当前状态,所以需要一个数据库表保存所有文件的当前状态,另外还需要一个配置表来告诉程序哪些文件名称需要扫描,以及需要监控的文件目录等信息,这些内容将在数据库设计章节详细介绍。

现在已经有了存储配置信息的数据库表,还需要解决一个关键问题:如何判断数据缓冲区中的文件已经完整上传?因为数据文件是通过FTP方式由生产环境上传到数据缓冲区中的,一些文件可能有数百兆字节,整个传输过程可能需要几分钟至数十分钟,因此需要判断文件是否传输完成。有两种简单方式可以判断文件是否传输完成。

1)文件传输过程中,在文件名称之后添加标记后缀,表示该文件尚未传输完成,一旦FTP传输完成,就将文件名称后面的标记后缀去除。这样,带有标记后缀的文件即为传输尚未结束的文件。

2)通过多次检测文件的大小来判定该文件是否传输完成。比如,连续5次检测到文件的大小相同,则认为该文件已经传输完成。本书采用此种方式,图3-6所示的为针对一个文件的检测流程。

 

图3-6 多次检测法判断是否文件完整

多次检测法的主要思想是通过多次检测一个文件的大小来判断该文件是否已经传输完成,当连续多次检测到文件的大小相同时,则认为文件已经传输完成(否则文件大小应该改变)。根据这个思想,图3-6中设置了一个计数器count,初始值为0,每隔15秒检测一下文件大小,当连续多次(图3-6中为5次)检测到文件大小相同时,进程结束,文件状态变为“文件就绪”。

3.2.2 下载文件

扫描文件进程在数据库中将文件状态变更为“文件就绪”,下载文件进程将这些处于“文件就绪”状态的文件下载到分析环境的对应服务器中。

同样,下载文件进程也要根据情况更新数据库中文件的状态,比如“开始下载”“下载成功”“下载失败”等,并且当文件下载成功后,要记录文件所在的路径,以便随后的解压进程找到对应的文件。

为了提高效率,下载文件采用多线程方式,通过调节并行线程数来寻求下载效率和带宽压力之间的平衡点。图3-7展示了多线程下载文件的流程。

 

图3-7 多线程下载文件流程图

3.2.3 解压文件

解压文件进程将文件状态为“下载成功”的文件进行解压缩,它根据下载文件进程记录的文件路径找到对应的压缩文件,然后根据文件后缀调用对应的解压缩接口。解压缩结束后,将文件状态变更为“解压成功”或者“解压失败”,当文件“解压成功”后,需要记录解压之后的文件存放路径,以便随后的加载文件进程使用。

解压缩可以使用Java自带的解压缩程序包进行,也可以通过调用命令行的方式实现(绝大部分操作系统都支持unzip命令,尽管其运行后的返回值略有不同)。

3.2.4 加载文件

加载文件进程负责将状态为“解压成功”的文件批量加载到对应的表中,目标表可以是关系型数据库,也可以是大数据平台的Hive表。

加载文件进程需要一些附加信息来确定文件的加载方式(增量或者全量)、对应的目标表信息等。这些信息通过配置表提供,将在数据库设计章节详述。

最后,加载文件进程调用批量导入命令(参阅2.2.4节)将数据文件快速高效地导入目标表中。

根据第1章介绍的数据更新规则,我们给出针对关系型数据库增量加载和全量加载的流程图,如图3-8所示。

 

图3-8 增量加载和全量加载流程(关系型数据库)

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
24天前
|
机器学习/深度学习 数据采集 监控
大模型开发:描述一个典型的机器学习项目流程。
机器学习项目涉及问题定义、数据收集、预处理、特征工程、模型选择、训练、评估、优化、部署和监控。每个阶段都是确保模型有效可靠的关键,需要细致操作。
16 0
|
1月前
|
数据采集 机器学习/深度学习 存储
【机器学习】数据清洗——基于Numpy库的方法删除重复点
【机器学习】数据清洗——基于Numpy库的方法删除重复点
71 1
|
1月前
|
数据采集 机器学习/深度学习 Python
【机器学习】数据清洗——基于Pandas库的方法删除重复点
【机器学习】数据清洗——基于Pandas库的方法删除重复点
45 1
|
1月前
|
机器学习/深度学习 数据采集 存储
【机器学习】机器学习流程之收集数据
【机器学习】机器学习流程之收集数据
40 1
|
1月前
|
机器学习/深度学习 数据采集 数据处理
构建高效机器学习模型的策略与实践
【2月更文挑战第14天】 在数据驱动的时代,机器学习已成为智能系统的核心。本文将探讨构建高效机器学习模型的关键技术要素,包括数据预处理、特征工程、模型选择和调参策略等。通过实例分析,我们将展示如何优化模型性能,减少过拟合风险,并提高泛化能力。文章旨在为开发者提供实用的技术指导,帮助他们在实际项目中实现机器学习模型的高效构建与应用。
|
1月前
|
机器学习/深度学习 算法 数据可视化
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
26 1
|
1月前
|
机器学习/深度学习 数据采集 监控
构建高效机器学习模型的策略与实践
【2月更文挑战第23天】 在数据科学领域,构建一个高效的机器学习模型是至关重要的。本文旨在探讨并提出一系列策略和最佳实践,以指导读者如何从数据处理到模型部署的各个阶段优化其机器学习项目。我们将重点讨论特征工程、算法选择、超参数调整以及模型评估等关键环节,并通过案例分析展示如何应对常见的挑战和误区。文章的目的是为从业者提供实用的指南,帮助他们构建出既准确又高效的机器学习系统。
|
6天前
|
数据采集 运维 算法
大数据项目管理:从需求分析到成果交付的全流程指南
【4月更文挑战第9天】本文介绍了大数据项目从需求分析到成果交付的全过程,包括需求收集与梳理、可行性分析、项目规划、数据准备与处理、系统开发与集成,以及成果交付与运维。文中通过实例展示了如何进行数据源接入、数据仓库建设、系统设计、算法开发,同时强调了需求理解、知识转移、系统运维的重要性。此外,还提供了Python和SQL代码片段,以说明具体技术实现。在大数据项目管理中,需结合业务和技术,灵活运用这些方法,确保项目的成功执行和价值实现。
22 1
|
20天前
|
机器学习/深度学习 人工智能 运维
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)(二)
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)
52 1
|
20天前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)(一)
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)
59 1