似乎每次你浏览 LinkedIn 时,本已拥挤不堪的数据环境中都会出现一种新工具。随着数据团队不断增加“数据堆栈”的组件,他们需要一种方法来管理和连接这些不同的工具。
数据编排是开发、执行和监控整个数据生态系统中组合、转换和组织数据的流程的过程。为此,数据工程师使用数据编排工具。在这里,我们将探索两种最流行的编排工具:Apache Airflow 和 Dagster。让我们开始吧!
什么是 Airflow?
Airflow 是构建、运行和监控数据管道的行业标准。它最初由 Airbnb 的数据工程团队于 2014 年开发。从那时起,该项目已被 Apache 软件基金会采用,并成为其许可下最受欢迎的产品。
Airflow 每月的下载量超过三千万次,拥有一个充满活力的贡献者和用户社区。在 Airflow 中,数据管道被称为 DAG,即有向无环图。
您可以在我们的Apache Airflow 入门教程中了解有关 Airflow 的更多信息。
什么是 Dagster?
与 Airflow 一样,Dagster 是一种编排工具,允许用户使用代码编写数 希腊赌博数据 据管道。它是开源的,最初于 2019 年推出。Dagster 使用 Python 来定义“资产”,这是数据管道的构建块。
Dagster 已成为 Airflow 在相对不拥挤领域的竞争对手。该项目由其开源社区维护,并由 Dagster Labs 提供商业支持。
连接现代数据堆栈
那么,Airflow 和 Dagster 在现代数据堆栈中处于什么位置?我们将从下面的架构图开始。
一个架构图,展示了现代数据堆栈中的许多工具,以及如何使用 Airflow 和 Dagster 来协调这些工具之间的数据流。
包含现代数据堆栈中使用的常用工具示例的架构图。
此架构图显示了许多人认为的标准数据堆栈。它由源系统、数据仓库和转换工具以及下游“目标”(例如 Tableau 和 Looker)组成。
这里,Airflow 和 Dagster 是连接这个数据生态系统的箭头。如果没有编排工具,就很难将数据从一个工具移动到另一个工具。
编排工具(例如 Airflow 和 Dagster)还提供了一层可观察性,使得人们可以轻松了解数据从源到目的地在何处、如何和何时传输,以及在此过程中如何操作数据。
Dagster 与 Airflow:主要特点和功能
您可能已经猜到了,Airflow 和 Dagster 在预期用途和在现代数据堆栈中扮演的角色方面有许多相似之处。这些包括:
能够编写管道代码
与现代数据堆栈的内置集成
本地开发经验
然而,每种产品都有一套独特的特性和功能,可以独立存在。
空气流动
让我们首先了解一下 Airflow 的一些主要功能:
了解 Airflow 和 DAG
在 Airflow 中,数据管道称为 DAG(有向无环图的缩写)。可以将 DAG 视为按特定顺序连接的任务集合。DAG 的最基本构建块是任务。例如,在执行提取、转换和加载(ETL) 的管道中,“转换”步骤将是其自己的任务。
这些任务通常使用 Airflow 操作符来定义。但是,您很快就会看到,还有另一种方法可以使用 TaskFlow API 来定义任务。
在 Airflow 中调度 DAG
在 Airflow 中调度管道具有无限灵活性。需要每天运行管道?没问题。希望它在每个月的第一个星期五执行?这也很容易。现在,如果您的经理要求您在更新数据集时触发 DAG,该怎么办?Airflow 也可以处理这个问题。
在调度 DAG 时,Airflow 提供了大量自定义选项。借助 CRON、时间表和数据感知调度等功能,您可以将 DAG 设置为在需要时运行。
任务流 API
为了让数据专业人员更容易编写 DAG,Airflow 社区推出了 TaskFlow API。与使用运算符的传统方法不同,TaskFlow API 允许您通过简单地修饰函数来定义任务。这使得在任务之间共享数据和建立任务依赖关系变得更加容易和直观。
此外,Astro SDK 等工具是在 TaskFlow API 之上构建的,进一步扩展了其功能。
晨星
让我们来比较一下 Dagster 的情况:
Dagster 的基于资产的方法
Dagster 采用独特的基于资产的方法来构建数据管道。在 Dagster 中,任何存储在持久存储中的数据对象(如文件或表)都称为资产。
这些资产是使用 Python 函数在代码中定义的。执行这些函数时,Dagster 会自动创建依赖项并具体化资产。这种以资产为中心的方法可以轻松跟踪管道内数据的生成和使用方式。
Dagster 与 Airflow:比较现代数据堆栈的顶级数据编排工具
-
- Posts: 324
- Joined: Mon Dec 23, 2024 5:03 am