web-dev-qa-db-fra.com

Pourquoi une tâche est-elle bloquée et non exécutée dans le flux d'air?

J'essaie le flux d'air avec le BigQueryOperator. Je pensais que j'utiliserais google composer plus tard, mais je veux qu'il fonctionne d'abord localement. J'ai un flux d'air vers le haut et exécuter un BashOperator fonctionne bien, je peux également exécuter airflow test <dag> <task>task est la grande tâche de requête que je veux exécuter, mais quand je déclenche le DAG à partir de l'interface utilisateur, la tâche bigquery n'est jamais mise en file d'attente. Au lieu de cela, ils ont l'état REMOVED et rien ne se passe .

Ma définition DAG ressemble à ceci:

from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta
from airflow.contrib.operators.bigquery_operator import BigQueryOperator

yesterday = datetime.combine(
    datetime.today() - timedelta(1),
datetime.min.time())

default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'email': ['[email protected]'],
    'start_date': yesterday,
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
}

with DAG(
        'tutorial', default_args=default_args) as dag:

operators
    t1 = BashOperator(
        task_id='print_date',
        bash_command='date')

    template_sql = '''
            SELECT 'TOMAS' name, '{{ params.my_value }}' value, "{{ params.my_value2 }}" tables
        '''

    sampleBigQuery1 = BigQueryOperator(
        task_id='bq_simple_sql1',
        bql=template_sql,
        use_legacy_sql=False,
        destination_dataset_table='temp_tomas.airflow_1',
        allow_large_results=True,
        params={'my_value': (datetime.now()).strftime("%D %T"),
                'my_value2': "yolo"},  # getTables()},
        create_disposition='CREATE_IF_NEEDED',
        write_disposition='WRITE_TRUNCATE'
    )

    t1 >> sampleBigQuery1

Alors, comment déboguer un cas lorsqu'il fonctionne pour exécuter airflow test ... Mais pas lorsqu'il est déclenché par le planificateur ou l'interface utilisateur? Est-ce quelque chose qui semble mal avec ce que j'ai ici?

Localement, j'utilise une installation standard de flux d'air avec sqllite, mais cela ne devrait pas avoir d'impact, je pense. Je gère tout en un python env, donc il devrait être assez contenu.

6
Tomas Jansson

S'il s'agit de votre première configuration Airflow, vous voudrez peut-être d'abord vérifier ces choses: Airflow 1.9.0 met en file d'attente mais ne lance pas de tâches

De plus, ici, je recommanderais surtout la dernière étape:

  • Si rien d'autre ne fonctionne, vous pouvez utiliser l'interface utilisateur Web pour cliquer sur le dag, puis sur Graph View. Sélectionnez maintenant la première tâche et cliquez sur Instance de tâche. Dans le paragraphe Détails de l'instance de tâche, vous verrez pourquoi un DAG attend ou ne s'exécute pas.

Cela pourrait vous donner une meilleure idée de la raison pour laquelle la tâche n'est pas planifiée.

3
tobi6