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>
Où 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.
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:
Cela pourrait vous donner une meilleure idée de la raison pour laquelle la tâche n'est pas planifiée.