web-dev-qa-db-fra.com

Flux d'air: Impossible de trouver dag_id

J'exécute un serveur de flux d'air et un opérateur sur différentes machines AWS. J'ai synchronisé ce dossier entre eux, exécuté airflow initdb sur les deux et vérifié que les identificateurs dag_id sont identiques lorsque j'exécute airflow list_tasks <dag_id>.

Lorsque j'exécute le planificateur et le travailleur, j'obtiens cette erreur sur le travailleur:

airflow.exceptions.AirflowException: dag_id est introuvable:. Le dag n’existait pas ou il n’a pas pu être analysé. [...] Command ...-- local -sd /home/ubuntu/airflow/dags/airflow_tutorial.py ' 

Ce qui semble être le problème, c'est que le chemin d'accès est incorrect (/home/ubuntu/airflow/dags/airflow_tutorial.py) puisque le chemin correct est/home / hadoop / ...

Sur le serveur, le chemin est avec Ubuntu, mais sur les deux fichiers de configuration, il s'agit simplement de ~/airflow/...

Qu'est-ce qui fait que le travailleur regarde dans cette voie et pas le bon?

Comment puis-je lui dire de regarder dans son propre répertoire d'accueil?

modifier:

  • C'est peu probable un problème de configuration. J'ai exécuté grep -R ubuntu et les seules occurrences sont dans les journaux
  • Lorsque je lance la même chose sur un ordinateur avec ubuntu en tant qu'utilisateur, tout fonctionne. Ce qui me porte à penser que pour une raison quelconque, le flux d'air fournit au travailleur le chemin complet de la tâche
7
Dotan

L'ajout du paramètre --raw à la commande airflow run m'a permis de voir quelle était l'exception originale. Dans mon cas, l'instance de base de données de métadonnées était trop lente et le chargement des dags a échoué en raison d'un délai d'attente. Je l'ai corrigé par:

  • Mise à niveau de l'instance de base de données
  • Augmentation du paramètre dagbag_import_timeout dans airflow.cfg

J'espère que cela t'aides!

12
michael

Avez-vous essayé de définir le paramètre dags_folder dans le fichier de configuration pour qu'il pointe explicitement vers/home/hadoop/c.-à-d. Le chemin souhaité? 

Ce paramètre contrôle l'emplacement de recherche des dags

1
Priyank Mehta

Je ressens la même chose: le processus de travail semble transmettre un argument --sd correspondant au dossier dags sur l'ordinateur du planificateur, pas sur l'ordinateur de travail (même si dags_folder est correctement défini dans le fichier de configuration de la circulation d'air sur l'agent). Dans mon cas, j'ai réussi à faire fonctionner les choses en créant un lien symbolique sur l'hôte du planificateur, de sorte que dags_folder puisse être défini sur la même valeur. (Dans votre exemple, cela signifierait créer un lien symbolique/home/hadoop ->/home/ubuntu sur la machine du planificateur, puis les paramètres dags_folder sur/home/hadoop). Donc, ce n'est pas vraiment une solution au problème mais c'est une solution de contournement viable dans certains cas.

1
gcbenison