繁体   English   中英

如何运行一个简单的 Airflow DAG

[英]How to Run a Simple Airflow DAG

我是 Airflow 的新手。我想在指定日期运行一个简单的 DAG。 我正在努力区分开始日期、执行日期和回填日期。 运行 DAG 的命令是什么?

这是我从那以后尝试过的:

airflow run dag_1 task_1 2017-1-23

我第一次运行该命令时,任务执行正确,但当我再次尝试时它不起作用。

这是我运行的另一个命令:

airflow backfill dag_1 -s 2017-1-23 -e 2017-1-24

我不知道该命令会带来什么。 DAG 会在每天 23 点到 24 点执行吗?

在运行上面的两个命令之前,我这样做了:

airflow initdb
airflow scheduler 
airflow webserver -p 8085 --debug &

这是我的DAG

from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta
default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': datetime(2017, 1, 23, 12),
    'email': ['airflow@airflow.com'],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
}

dag = DAG(
    'dag_1', default_args=default_args, schedule_interval=timedelta(1))

t1 = BashOperator(
    task_id='create_clients',
    bash_command='Rscript /scripts/Cli.r',
    dag=dag)

t2 = BashOperator(
    task_id='create_operation',
    bash_command='Rscript Operation.r',
    retries=3,
    dag=dag)

t2.set_upstream(t1)

屏幕截图:树视图

更新

airflow run dag_1 task_1 2017-1-23T10:34

如果你用它运行一次

airflow run dag_1 task_1 2017-1-23

保存运行并再次运行它将不会执行任何操作,您可以尝试通过强制它来重新运行它

airflow run --force=true dag_1 task_1 2017-1-23

气流回填命令将运行在从开始日期到结束日期指定的时间段内运行的任何执行。 它将取决于您在DAG上设置的计划,如果您将其设置为每小时触发它应运行24次,但它也不会重新执行先前执行的运行。

您可以清除任务,就像它从未运行一样

airflow clear dag_1 -s 2017-1-23 -e 2017-1-24

另请查看cli文档: https//airflow.incubator.apache.org/cli.html

开始日期,执行日期和回填之间的差异

完成回填以显式运行DAG以测试/手动运行DAG /重新运行错误输出的DAG。 您可以使用CLI执行此操作

airflow backfill -s <<start_date>> <<dag>> 
#optionally provide -1 as start_date to run it immediately

顾名思义, start_date是DAG定义有效时的日期

execution_date是运行它的日期时间。 这是您在测试DAG的各个任务时提供的,如下所示

airflow test <<dag>> <<task>> <<exec_date>>

什么是运行dag的命令

回填是显式运行DAG的命令。 否则,您只需将DAG放在DAGBAG文件夹中,调度程序将按照DAG定义中定义的计划运行它

airflow backfill -s <<start_date>> <<dag>> 
#optionally provide -1 as start_date to run it immediately

对于 Airflow 的更新版本,您应该使用airflow tasks run

例如: airflow tasks run dag_1 task_1 2023-1-3

当我在同一个目录中运行我的 dag 时,我遇到了一个错误,显示了关于解析的信息——

airflow 任务运行 helo1 helloworld 2023-1-4

引发 AirflowException(airflow.exceptions.AirflowException:找不到 Dag 'helo1';它不存在或无法解析。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM