web-dev-qa-db-fra.com

Comment exécuter un DAG de flux d'air simple

Je suis totalement nouveau sur Airflow. Je voudrais exécuter un DAG simple à une date spécifiée. J'ai du mal à faire la différence entre la date de début, la date d'exécution et le remblayage. Et quelle est la commande pour exécuter le DAG?

Voici ce que j'ai essayé depuis:

airflow run dag_1 task_1 2017-1-23

La première fois que j'ai exécuté cette commande, la tâche s'est exécutée correctement, mais lorsque j'ai réessayé, cela n'a pas fonctionné.

Voici une autre commande que j'ai exécutée:

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

Je ne sais pas à quoi m'attendre de cette commande. Les DAG s'exécuteront-ils tous les jours du 23 au 24?

Avant d'exécuter les deux commandes ci-dessus, j'ai fait ceci:

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

Voici mon 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': ['[email protected]'],
    '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)

Capture d'écran: Tree View

[~ # ~] mise à jour [~ # ~]

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

Si vous l'exécutez une fois avec le

airflow run dag_1 task_1 2017-1-23

Le run est enregistré et le relancer ne fera rien que vous puissiez essayer de le relancer en le forçant

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

La commande airflow backfill exécutera toutes les exécutions qui se seraient déroulées dans la période spécifiée de la date de début à la date de fin. Cela dépendra de la planification que vous définissez sur le DAG, si vous la définissez pour qu'elle se déclenche toutes les heures, elle devrait s'exécuter 24 fois, mais elle ne réexécutera pas non plus les exécutions précédemment exécutées.

Vous pouvez effacer la tâche comme si elle ne s'était JAMAIS exécutée

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

Consultez également les documents cli ici: https://airflow.incubator.Apache.org/cli.html

19
Necravolver

différence entre la date de début, la date d'exécution et le remblayage

Le remblayage est effectué pour exécuter DAG de manière explicite afin de tester/exécuter manuellement DAG/réexécuter un DAG qui a subi une erreur. Pour ce faire, utilisez CLI

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

date_début est, comme son nom l'indique, date à partir de laquelle la définition du DAG est valide

date_exécution est la date-heure à laquelle il doit être exécuté. Ce que vous fournissez lors du test des tâches individuelles de DAG comme ci-dessous

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

quelle est la commande pour exécuter le dag

Backfill est la commande pour exécuter DAG explicitement. Sinon, vous venez de mettre le DAG dans le dossier DAGBAG et le planificateur l'exécutera selon la planification définie dans la définition du DAG

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