跳到主要内容

Airflow 命令行工具

Apache Airflow 是一个强大的工作流管理平台,允许你以编程方式定义、调度和监控复杂的工作流。Airflow 提供了一个命令行工具(CLI),让你能够通过终端与 Airflow 进行交互。本文将详细介绍如何使用 Airflow 命令行工具,帮助你更好地管理和调试你的工作流。

什么是Airflow命令行工具?

Airflow 命令行工具是一个终端界面,允许你执行各种与 Airflow 相关的任务,例如启动服务、触发任务、查看日志等。通过命令行工具,你可以快速执行操作,而无需通过 Airflow 的 Web UI。

安装与设置

在开始使用 Airflow 命令行工具之前,请确保你已经安装了 Airflow。如果你还没有安装,可以通过以下命令进行安装:

bash
pip install apache-airflow

安装完成后,你可以通过以下命令检查 Airflow 是否安装成功:

bash
airflow version

如果安装成功,你将看到类似以下的输出:

bash
2.6.1

常用命令

1. 启动Airflow Web服务器

要启动 Airflow 的 Web 服务器,可以使用以下命令:

bash
airflow webserver

这将启动一个本地服务器,默认情况下,你可以通过 http://localhost:8080 访问 Airflow 的 Web UI。

2. 启动Airflow调度器

Airflow 调度器负责触发任务并监控其执行状态。要启动调度器,可以使用以下命令:

bash
airflow scheduler

3. 查看DAG列表

要查看当前系统中所有可用的 DAG(有向无环图),可以使用以下命令:

bash
airflow dags list

4. 触发DAG运行

要手动触发一个 DAG 的运行,可以使用以下命令:

bash
airflow dags trigger <dag_id>

例如,如果你有一个名为 example_dag 的 DAG,你可以通过以下命令触发它:

bash
airflow dags trigger example_dag

5. 查看任务日志

要查看特定任务的日志,可以使用以下命令:

bash
airflow tasks logs <dag_id> <task_id> <execution_date>

例如,要查看 example_dagtask_1 的日志,可以使用以下命令:

bash
airflow tasks logs example_dag task_1 2023-10-01

6. 暂停和恢复DAG

你可以通过命令行工具暂停或恢复一个 DAG 的运行。要暂停一个 DAG,可以使用以下命令:

bash
airflow dags pause <dag_id>

要恢复一个 DAG,可以使用以下命令:

bash
airflow dags unpause <dag_id>

实际案例

假设你正在开发一个数据处理管道,其中包含多个任务,例如数据提取、数据转换和数据加载。你可以使用 Airflow 命令行工具来管理和监控这个管道。

案例:触发数据处理管道

假设你有一个名为 data_pipeline 的 DAG,它包含以下任务:

  1. extract_data:从外部 API 提取数据。
  2. transform_data:对提取的数据进行转换。
  3. load_data:将转换后的数据加载到数据库中。

你可以通过以下命令触发这个 DAG 的运行:

bash
airflow dags trigger data_pipeline

然后,你可以使用以下命令查看每个任务的日志:

bash
airflow tasks logs data_pipeline extract_data 2023-10-01
airflow tasks logs data_pipeline transform_data 2023-10-01
airflow tasks logs data_pipeline load_data 2023-10-01

总结

Airflow 命令行工具是一个强大的工具,可以帮助你更高效地管理和监控你的工作流。通过本文,你已经学习了如何使用 Airflow 命令行工具来启动服务、触发任务、查看日志等操作。希望这些知识能够帮助你在实际项目中更好地使用 Airflow。

附加资源

练习

  1. 使用 Airflow 命令行工具启动 Web 服务器和调度器。
  2. 创建一个简单的 DAG,并使用命令行工具触发它的运行。
  3. 查看 DAG 中某个任务的日志,并尝试理解日志内容。

通过完成这些练习,你将更加熟悉 Airflow 命令行工具的使用。