介绍:
在传统的数据开发中,做数据仓库和数据数据集市都采用ETL工具,例如kettle等,调度采用azkaban 或者自己写一套调度工具,可是这些都是需要花费大量时间和人员进行相关配置。一个数仓项目做下来至少要6个月左右。
那么随着目前数据湖,湖仓一体,批流一体的出现,ETL得过程不单单 是写sql,做关联那么简单,需要有一个数据管道进行集成,并且这个管道是”现接现用“,就是需要动态配置。不是静态配置。
接下来介绍两款实时加工的管道工作流:Prefect 和Dagster
最早工作流管道主要是Airflow ,但是是静态配置上下文,如果利用上层的datafrom.需要进行相关配置,而且支持不是很好,现在的工作流管道支持动态数据传递。
Prefect介绍:
Prefect 是一个 Python 的开源工作流程管理器,旨在简化和自动化数据工程、科学和分析任务的编排和执行。它提供了一个易于使用和可扩展的编程接口,可以帮助用户构建复杂的工作流程,并支持在各种环境中进行分布式执行,包括本地、云端和混合环境。Prefect 还提供了丰富的 API 和用户界面,让用户可以方便地管理和监控任务的执行状态和结果。通过使用 Prefect,用户可以更加高效和可靠地进行数据处理和分析工作。
prefect优势:
Prefect 是一个强大的工作流程管理工具,相较于其他类似的工具,它提供了多项优势。以下是 Prefect 相较于其他工作流程管理工具的几个优势:
-
Pythonic:Prefect 完全采用 Python 构建,这使得 Python 开发人员可以轻松使用和集成到他们现有的工作流程中。其他工作流程管理工具可能有自己的语言或使用复杂的配置文件,这可能会使开发人员难以使用。
-
动态工作流程:Prefect 允许用户创建可以基于输入数据或条件进行更改的动态工作流程。这与其他需要预先定义静态工作流程的工具不同,这可能会限制灵活性并使处理意外情况变得困难。
-
分布式执行:Prefect 旨在在分布式计算系统上运行工作流程,例如集群或云环境。这使得用户可以根据需要扩展他们的工作流程,并利用分布式计算的性能优势。
-
监控和调试:Prefect 提供了广泛的监控和调试功能,使得跟踪工作流程的进度和识别问题变得容易。其他工具可能没有相同级别的工作流程执行可视性,或需要额外的设置才能启用监控和调试。
-
开源:Prefect 是一个开源工具,这意味着它是免费的,并且可以根据特定的需求进行定制。其他工作流程管理工具可能是专有的或需要许可证费用,这可能增加使用它们的成本。
总的来说,Prefect 是一个灵活而强大的工作流程管理工具,相较于其他类似的工具,它提供了多项优势。它的 Pythonic 设计、支持动态工作流程、分布式执行、监控和调试功能以及开源特性,使其成为数据科学家、工程师和分析师的首选。
应用场景:
Prefect 可以帮助管理和自动化许多常见的数据工作流程,例如:
-
ETL 流程:从不同数据源抽取数据,转换为需要的格式,然后加载到目标数据仓库或数据库。Prefect 可以调度和监控这个完整的 ETL 过程。
-
数据集成:从多个源头获取数据集,清理、归一化这些数据集,最终合并为一个整合的数据集。Prefect 可以编排这个数据集成的流程。
-
机器学习流程:从获取和清理训练数据开始,到训练模型,对模型进行评估和调优,最终部署模型到生产环境。Prefect 可以支持这个端到端的机器学习工作流。
-
数据分析流程:从获取原始数据集,进行数据清理、处理,绘图和作图,进行探索性分析,最终产出数据分析结果和见解。这整个分析过程可以用 Prefect 进行管理。
-
定期报告和仪表盘:定期从数据库或数据仓库获取最新的数据,进行统计和计算,生成报告和仪表盘,然后通过邮件或其他方式发送给用户。这种定期数据汇总和报告流程也适用于用 Prefect 自动化。
-
定期重跑历史工作流程:有些工作流程不定期需要重跑,比如用最新的模型或参数重跑机器学习模型的训练,或者用更新后的数据源重跑ETL流程。这些历史工作流程的定期重跑也可以由 Prefect 进行编排。
Dagster 介绍:
Dagster 作为新一代的调度引擎,可以覆盖整个数据开发的全部流程。
dagster 是基于python 开发的数据调度平台,可以方便的处理数据的pipeline 同时支持数据资产的可观测性。
在dagster 中定义资产可以:可以通过代码做到流程血缘,并且支持上下文数据传递
dagster 可以功能是能够使用外部工具,如DBT, Snowflake,Airbyte,Fivetran和许多其他工具来定义我们的资产。这很神奇,因为它使我们能够集成到我们的全球平台中,而不仅仅是在大数据生态系统中。
并且直接从元数据中获取数据: