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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介:

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 增量加载和全量加载流程(关系型数据库)

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
2月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
146 4
|
5天前
|
机器学习/深度学习 人工智能 算法
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
68 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
2天前
|
机器学习/深度学习 存储 设计模式
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
本文探讨了数据基础设施设计中常见的一个问题:数据仓库或数据湖仓中的表格缺乏构建高性能机器学习模型所需的历史记录,导致模型性能受限。为解决这一问题,文章介绍了缓慢变化维度(SCD)技术,特别是Type II类型的应用。通过SCD,可以有效追踪维度表的历史变更,确保模型训练数据包含完整的时序信息,从而提升预测准确性。文章还从数据工程师、数据科学家和产品经理的不同视角提供了实施建议,强调历史数据追踪对提升模型性能和业务洞察的重要性,并建议采用渐进式策略逐步引入SCD设计模式。
15 8
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
|
25天前
|
机器学习/深度学习 传感器 运维
使用机器学习技术进行时间序列缺失数据填充:基础方法与入门案例
本文探讨了时间序列分析中数据缺失的问题,并通过实际案例展示了如何利用机器学习技术进行缺失值补充。文章构建了一个模拟的能源生产数据集,采用线性回归和决策树回归两种方法进行缺失值补充,并从统计特征、自相关性、趋势和季节性等多个维度进行了详细评估。结果显示,决策树方法在处理复杂非线性模式和保持数据局部特征方面表现更佳,而线性回归方法则适用于简单的线性趋势数据。文章最后总结了两种方法的优劣,并给出了实际应用建议。
64 7
使用机器学习技术进行时间序列缺失数据填充:基础方法与入门案例
|
2月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
41 6
|
2月前
|
机器学习/深度学习 数据采集 算法
机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用
医疗诊断是医学的核心,其准确性和效率至关重要。本文探讨了机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用。文章还讨论了Python在构建机器学习模型中的作用,面临的挑战及应对策略,并展望了未来的发展趋势。
161 1
|
2月前
|
存储 机器学习/深度学习 大数据
量子计算与大数据:处理海量信息的新方法
量子计算作为革命性的计算范式,凭借量子比特和量子门的独特优势,展现出在大数据处理中的巨大潜力。本文探讨了量子计算的基本原理、在大数据处理中的应用及面临的挑战与前景,展望了其在金融、医疗和物流等领域的广泛应用。
|
2月前
|
机器学习/深度学习 数据采集 数据处理
谷歌提出视觉记忆方法,让大模型训练数据更灵活
谷歌研究人员提出了一种名为“视觉记忆”的方法,结合了深度神经网络的表示能力和数据库的灵活性。该方法将图像分类任务分为图像相似性和搜索两部分,支持灵活添加和删除数据、可解释的决策机制以及大规模数据处理能力。实验结果显示,该方法在多个数据集上取得了优异的性能,如在ImageNet上实现88.5%的top-1准确率。尽管有依赖预训练模型等限制,但视觉记忆为深度学习提供了新的思路。
41 2
|
2月前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
477 7
|
2月前
|
存储 分布式计算 大数据
大数据 优化数据读取
【11月更文挑战第4天】
61 2