airflow中dag定义
时间: 2025-04-16 13:36:37 浏览: 23
### 定义 Apache Airflow 中的 DAG
在 Apache Airflow 中,DAG(有向无环图)用于表示工作流,其中节点代表任务,边则展示了任务间的依赖关系[^1]。
#### 创建 Python 文件
为了定义一个 DAG,在指定目录下创建一个新的Python脚本文件。通常这个位置是在 `$AIRFLOW_HOME/dags` 下面。确保此路径已正确配置于 `airflow.cfg` 或者相应的环境变量中[^3]。
#### 导入必要的模块
```python
from datetime import timedelta, datetime
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
```
这段代码导入了所需的类和其他资源来构建和操作 DAG 及其组件。
#### 设置默认参数
```python
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'email': ['[email protected]'],
'email_on_failure': True,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
}
```
这里设置了执行 DAG 和任务时的一些通用选项,比如失败重试次数以及延迟时间等[^4]。
#### 实例化 DAG 对象
```python
with DAG(
dag_id='example_bash_operator',
default_args=default_args,
description='A simple tutorial DAG',
schedule_interval=timedelta(days=1),
start_date=datetime(2021, 1, 1),
catchup=False,
) as dag:
```
上述语句初始化了一个新的 DAG 并指定了几个重要属性,例如唯一标识符 (`dag_id`)、描述文字(`description`)、计划间隔(`schedule_interval`) 等。
#### 添加具体任务
```python
t1 = BashOperator(task_id='print_date', bash_command='date')
t2 = BashOperator(task_id='sleep', bash_command='sleep 5')
t1 >> t2
```
此处定义了两个简单的Bash命令作为任务,并建立了它们之间的顺序依赖关系——即先打印日期再休眠五秒。
通过这种方式就可以完成基本的 DAG 构建过程;当然实际应用可能会更加复杂,涉及更多种类的操作器 (Operators),传感器(Sensors), 子DAGs(Sub-DAGs)等等。
阅读全文
相关推荐


















