为机器学习模型设计数据管道架构
在本文中,我将以股票预测为例,探讨三种常见模式:传统数据仓库、云原生数据湖和 现代Lakehouse。

数据管道架构是将原始数据转化为可操作预测的战略蓝图。
但设计该架构似乎很复杂,因为它涉及众多组件,而每个组件的具体选择取决于数据的特性和业务需求。
在本文中,我将构建这些组件,并探讨三种常见模式:
- 传统数据仓库、
- 云原生数据湖和
- 现代Lakehouse,
并以股票价格预测为例。
1、什么是数据管道架构
数据管道架构定义了数据从采集到可用于分析和机器学习状态的结构、组件和流程。
下图展示了数据管道架构中的关键组件和主要选项:

关键组件包括:
- 数据源:数据的来源;
- 采集:收集数据并将其导入系统的方法;
- 存储:数据的存放位置;
- 处理:数据的转换和清理;
- 服务:使最终用户和应用程序可以访问处理后的数据;
- 治理:确保数据质量、安全性、隐私性和合规性。
处理部分包括加载策略(例如满载、增量加载和差异加载)以及数据转换(例如清理、归集和预处理)。
每个组件的选择取决于数据特性(包括其种类、数量和速度)以及特定的业务需求。
- 多样性:数据的多样性(结构化、半结构化、非结构化)会影响存储选择。
- 海量:海量数据决定了对可扩展分布式技术(例如 Spark、Hadoop)和经济高效的存储解决方案(例如云对象存储)的需求。
- 速度:数据生成和处理的速度决定了是应该采用高速实时流式架构,还是低速批处理架构。
- 业务需求是最终的指导力量。
由于某些选项密切相关,我将在下一节中以股票价格预测为例,介绍三种常见的组合。
2、传统数据仓库
第一种组合是使用 ETL(提取、转换、加载)方法的传统数据仓库架构。
下图展示了其标准架构,原始数据被提取并转换为结构化数据,然后加载到数据仓库中,以适应预定义的模式:

每个组件中典型的选项包括:
- 来源:结构化数据,批处理
- 提取:批处理
- 存储:数据仓库
- 处理:ETL(提取、转换、加载)
- 服务:BI、低频报告和分析
ETL 流程在加载之前对数据进行严格的清理和转换,从而确保:
- 访问稳定、定义明确的数据源;
- 高水平的准确性和一致性;以及
- 非常快速的查询性能。
缺点包括:
- 数据类型:不适用于非结构化或半结构化数据,例如图像、文本。
- 成本:维护数据仓库的成本可能很高。
- 延迟:批处理意味着数据会按计划(例如每天或每周)更新。不适用于实时推理。
2.1 用例 - 股价预测
该架构最适合基于季度或年度财务报告以及历史收盘股价进行长期预测。

图中,该架构首先将数十年的历史数据填充到数据仓库中。
然后,通过预定的批处理进程(例如,每日或每周)逐步加载每日股票交易量。
当财务记录进行调整时,批处理进程还会执行增量加载以更新数据仓库。
然后,使用结构化数据训练模型,为低频决策提供预测。
由于预定的批处理进程会在数据和预测之间产生延迟,因此该架构不适用于实时股票预测。
2.2 添加暂存区
一种先进的方法是利用暂存区来存储提取的数据,然后再通过 SQL 查询进行转换:

主要区别在于转换过程的隔离性和效率。
如果没有暂存区,转换将直接进行在源系统或目标数据仓库中执行转换。这可能效率低下且存在风险:
- 源系统过载:复杂的转换会导致系统速度减慢,影响核心业务运营。
- 数据仓库瓶颈:查询和报告速度减慢,消耗数据仓库的计算资源。
暂存区可以通过将原始数据加载到临时存储空间(例如专用 S3 存储桶)中,从而减轻数据仓库或源系统的繁重转换过程负担。
然后,像 Apache Spark 这样的独立处理引擎会在不影响源系统或数据仓库的情况下运行转换。
虽然这会增加操作复杂性,但也具有其他优势:
- 错误处理:即使转换失败,数据仓库中的原始数据也不会受到影响。只需在暂存区重新运行转换即可。
- 数据质量控制:通过在暂存区中添加多个转换步骤(例如数据清理、特征工程和预处理),确保只有高质量数据加载到数据仓库。
3、云原生数据湖
第二种组合是云原生数据湖架构。
这种架构灵活且经济高效,非常适合处理海量多样化数据,包括非结构化数据。
主要有三种方法:
- 标准 ELT(提取、加载、转换)、
- 推送 ELT 和
- EtLT(提取、轻量转换、加载、转换)。
3.1 标准 ELT 方法
标准方法利用 ELT 处理:

首先,原始数据被提取到数据湖中,然后加载并转换后存储在数据仓库中。
3.2 推送式 ELT 方法
将数据提取到数据湖的另一种方法是推送方法,即将外部数据源的数据直接提取到数据湖:

这种方法可能会导致对数据提取的控制有限,在数据丢失或损坏的情况下,需要与负责数据源的团队进行协调。
3.3 EtLT(提取、轻量转换、加载和转换)方法
从数据源提取的数据可能包含机密数据,未经授权的个人不应访问。
EtLT 方法包含一个额外的“轻量”转换步骤,在将数据加载到数据湖之前,对敏感信息进行屏蔽或加密:

在每种方法中,数据湖和数据仓库的组合都适用于对存储在数据湖中的原始数据应用不同的分析技术。
每个组件中通常选择的选项如下:
- 来源:适用于数据结构和流式传输
- 提取:适用于流式传输,但批处理也是一种选择。
- 存储:数据湖 + 数据仓库
- 处理:ELT 或 EtLT
虽然每种方法都会增加管理多种工具的复杂性,但其他优势包括:
- 可扩展性:提取和转换过程的分离增强了可扩展性和灵活性。
- 可管理性:易于存储、跟踪和审查 SQL 查询(转换)。
4、数据提取模式
所有方法均可用于批处理和流式传输管道。
然而,由于 ELT 和 EtLT 先加载后转换的特性,它们非常适合流数据的实时需求。
但 Lambda 和 Kappa 等混合架构旨在无缝结合批处理和流式提取,以提供全面的数据处理。
让我们来一探究竟。
4.1 Lambda 架构
Lambda 架构采用双路径方法,其中批处理层遵循 ETL 流程来转换大型历史数据集,而速度层则处理适合 ELT 或 EtLT 方法的实时数据。

该架构可根据业务需求提供实时和批量预测访问。
用例 - 股价预测
使用上一架构中相同的股价预测用例,Lambda 架构可以扩展为通过速度层提供实时预测,而批处理层提供长期预测。
两层的预测结果合并并提供给用户,从而提供稳定的长期前景和波动的实时预测。
4.2 Kappa 架构
Kappa 架构通过使用单一统一的流处理管道来处理实时和历史数据,从而简化了 Lambda。

无Kappa 采用 ELT 模型,将来自不同来源的所有数据以流的形式加载,然后由单一处理引擎进行转换。
用例—股票价格预测
在同样的股票价格预测用例中,当公司优先考虑降低开发复杂性和运营开销,同时提供实时预测和长期预测时,Kappa 是最佳选择。
5、现代 Lakehouse
最后一种组合是 Lakehouse 架构。
Lakehouse 架构旨在结合数据仓库和数据湖的最佳特性,创建一个统一的平台来处理结构化和非结构化数据:

组件选项包括:
- 数据源:Versatile(适用于结构化和数据流)
- 提取:批处理、流
- 存储:Lakehouse
- 处理:ELT(提取、加载、转换)
在 Lakehouse 中,青铜层充当数据湖,用于提取来自外部数据源的原始数据。
然后,银层通过清理和结构化原始数据来处理数据转换。
金层为特定项目构建精选表,执行特征工程,以设计未来预测所需的特征。
这种组合在一个简化的系统中,既提供了数据湖的灵活性,又提供了数据仓库的可靠性和性能。
主要优势包括:
- 统一存储:Lakehouse 可在单一平台存储所有类型的数据,包括结构化、非结构化和半结构化数据。
- 经济高效:利用 S3 等低成本的云端对象存储。
- 开放性:通过使用 Apache Spark、Delta Lake 等开源技术和 Parquet 等开放文件格式,避免供应商锁定。
此架构在实施和数据治理方面较为复杂。
5.1 用例 - 股价预测
该架构在单一平台中同时处理历史数据和实时数据流。
包含铜牌、银牌和金牌三个等级的徽章结构将原始数据逐步提炼为高质量特征。
假设我们有来自三个数据源的原始数据:
- API - 非结构化股价
- RSS 源 - 非结构化新闻
- 内部数据库 - 结构化财务记录
铜层:
铜牌层充当数据湖,存储来自多个数据源的原始数据。
银层:
然后,银层清理并构建原始数据:
- 运行查询将所有股票价格与相应的财务记录连接起来,
- 从新闻提要中清理杂乱的文本数据,以及
- 提取给定数据范围内的新闻文章。
金层:
最后,金层运行特征工程,例如从清理后的新闻数据中计算 30 天移动平均线、波动率指标和市场情绪评分。
最终,这个高度精炼的数据集将用于训练模型。
6、结束语
数据管道架构在将原始数据转化为有意义的预测方面发挥着关键作用。
在本文中,我们了解到三种常见的架构——传统数据仓库、云原生数据湖和现代数据湖——各有优缺点。
最佳架构并非一刀切的解决方案,而是基于对数据特征和业务目标的仔细评估而做出的战略选择。
原文链接:Designing Data Pipeline Architectures for Machine Learning Models
汇智网翻译整理,转载请标明出处
