在当今数据驱动的世界中,有效的数据管理和控制变得至关重要。ETL(提取、转换、加载)和工作流编排工具正是为此目的而生。这些工具通过提供多种操作选项,帮助实现更好的数据管理和控制。本文将深入探讨ETL的复杂性,并通过实例说明其在不同场景下的应用,以及工作流编排工具如何帮助更好地处理数据和适应任务需求。
ETL(Extract Transform Load)是指将数据相关的操作,包括数据检索、预/后处理以及以可重用格式存储数据等,集成到一个端到端的过程中。在这个过程中,原始数据被转换成有用的处理数据。ETL过程包括提取、转换和加载三个阶段。
提取是ETL过程的第一阶段,涉及从多种格式(如图像、音频和历史数据)中检索原始数据,并从多个存储(如Google Cloud Storage、AWS S3桶、平面文件和其他RDBMS数据库)中预处理数据,以创建有用的数据。
提取阶段得到的数据随后会经过多种操作,如修正数据类型、移除不需要的属性、合并和分割。经过这些操作后,得到了可用于存储在大型仓库(如Snowflake、BigQuery、Redshift)或类似存储中的可用数据。
新修改的数据必须以可再次使用的形式保存。任何时候添加新信息,现有数据都可以更新。加载可以定期进行,也可以在接收到新客户数据或生成数据时进行。
管道是指按预定顺序完成的任务序列。数据转换是使用ETL管道中的预定过程完成的。管道涵盖了在数据被转移到管道中的下一个任务之前对其应用的所有操作。
以下是一些ETL操作的有用示例,说明它们在何处被常规使用:
构建模型训练的原始数据
:从数据湖中检索由客户产生的原始数据,清洗和准备数据,并通过使用转换(如调整大小和裁剪)来转换照片,最终以所需的格式导出,以便后续用于模型重新训练。用户分析和模式识别
:从Google Cloud Storage等大型数据存储系统中提取历史数据,使用BigQuery和基于SQL的查询工具。处理后,这些数据被提供给分析和可视化程序,如Power BI或Tableau。它们可以与Python结合使用,进行描述性分析,其输出可以应用于业务决策。模型验证
:一旦模型投入生产,通常需要对其进行监控。定期运行可以控制模型的准确性,监控任何准确性的损失,并帮助确定其原因。它可能是管道操作,或者是由新数据连续流入引起的持续数据漂移。管道健康监控
:持续监控和运行管道有助于了解数据随时间的变化以及如何修改管道以适应变化的数据。用户可以通过集成通知来改变任务和控制,以识别其管道失败的位置。超参数搜索
:ETL和工作流管理技术,如Airflow和Prefect,可以用于超出其主要范围的用例,如超参数调整和搜索,以及将数据划分为训练、验证和测试集。可以设置足够复杂的任务,以防止数据在数据集之间泄漏。使用Airflow,可以自动化超参数调整和搜索。可以创建DAG来搜索和测试超参数,然后将结果报告给用户。
工作流编排工具是数据监控和调节工具,它们遵循业务规则和编排管理规则,帮助调节数据流并建立通过活动组装成工作流的管道来转换数据。
Airflow是由Airbnb构建的开源工作流编排和管理工具,用于构建工作流,帮助解决ETL问题。Airflow可以使用Python来准备任务和工作流,这对用户来说很方便,因为大多数ETL过程更倾向于用Python语言定义,部分原因是Python拥有一些强大的库,如pandas和dask,在ETL过程中扮演着重要角色。