Apache Airflow

Apache Airflow™ 是一个开源平台,用于开发、调度和监控面向批处理的工作流。Airflow 的可扩展 Python 框架使您能够构建工作流与几乎任何技术连接。Web 界面有助于管理工作流的状态。Airflow 可以通过多种方式进行部署,从笔记本电脑上的单个进程到分布式设置,甚至支持最大的工作流程。

Airflow 的理念是将工作流定义为代码, Workflows as code

Airflow 工作流的主要特征是所有工作流都是在 Python 代码中定义的。“工作流即代码”有多种用途:

  • Dynamic: Airflow pipelines are configured as Python code, allowing for dynamic pipeline generation.
  • Extensible: The Airflow™ framework contains operators to connect with numerous technologies. All Airflow components are extensible to easily adjust to your environment.
  • Flexible: Workflow parameterization is built-in leveraging the Jinja templating engine.

动态:Airflow 管道配置为 Python 代码,允许动态生成管道。

可扩展:Airflow™ 框架包含可连接多种技术的操作符。所有 Airflow 组件都具有可扩展性,可轻松适应您的环境。

灵活:利用 Jinja 模板引擎,内置工作流程参数化功能。

from datetime import datetime

from airflow import DAG
from airflow.decorators import task
from airflow.operators.bash import BashOperator

# A DAG represents a workflow, a collection of tasks
with DAG(dag_id="demo", start_date=datetime(2022, 1, 1), schedule="0 0 * * *") as dag:
    # Tasks are represented as operators
    hello = BashOperator(task_id="hello", bash_command="echo hello")

    @task()
    def airflow():
        print("airflow")

    # Set dependencies between tasks
    hello >> airflow()

如果你喜欢编码而不是点击,那么 Airflow 就是你的理想工具。工作流被定义为 Python 代码,这意味着

  • 工作流程可存储在版本控制中,以便回滚到以前的版本

  • 多人可同时开发工作流程

  • 可编写测试来验证功能

  • 组件具有可扩展性,您可以在大量现有组件的基础上进行构建