6 votes

configurer Airflow pour qu'il fonctionne avec CeleryExecutor

J'essaie de configurer Airbnb AirFlow pour utiliser le CeleryExecutor comme suit :

J'ai changé le executer dans le fichier airflow.cfg de SequentialExecutor a CeleryExecutor :

# The executor class that airflow should use. Choices include
# SequentialExecutor, LocalExecutor, CeleryExecutor
executor = CeleryExecutor

Mais j'obtiens l'erreur suivante :

airflow.configuration.AirflowConfigException: error: cannot use sqlite with the CeleryExecutor

Il convient de noter que le sql_alchemy_conn est configuré comme suit :

sql_alchemy_conn = sqlite:////root/airflow/airflow.db

J'ai consulté le GIT d'Airflow ( https://github.com/airbnb/airflow/blob/master/airflow/configuration.py )

et a constaté que le code suivant lance cette exception :

def _validate(self):
        if (
                self.get("core", "executor") != 'SequentialExecutor' and
                "sqlite" in self.get('core', 'sql_alchemy_conn')):
            raise AirflowConfigException("error: cannot use sqlite with the {}".
                format(self.get('core', 'executor')))

Il semble, d'après cette validate que la méthode sql_alchemy_conn ne peut contenir sqlite .

Avez-vous une idée de la manière de configurer la fonction CeleryExecutor sans sqllite ? veuillez noter que j'ai téléchargé rabitMQ pour travailler avec le CeleryExecuter comme il se doit.

16voto

Yu You Points 300

AirFlow affirme que le CeleryExecutor nécessite un autre backend que la base de données par défaut SQLite. Vous devez utiliser MySQL o PostgreSQL par exemple.

En sql_alchemy_conn en airflow.cfg doit être modifiée pour suivre la structure de la chaîne de connexion de SqlAlchemy (voir Document SqlAlchemy )

Par exemple,

sql_alchemy_conn = postgresql+psycopg2://airflow:airflow@127.0.0.1:5432/airflow

3voto

vipul sharma Points 41

Pour configurer Airflow pour mysql installez d'abord mysql ceci pourrait vous aider ou simplement en consultant Google

  • goto airflow installation director usually /home//airflow
  • éditer airflow.cfg
  • localiser

    sql_alchemy_conn = sqlite:////home/vipul/airflow/airflow.db

et ajoutez # devant pour que cela ressemble à

#sql_alchemy_conn = sqlite:////home/vipul/airflow/airflow.db 

si vous avez sqlite par défaut

  • ajouter cette ligne en dessous

    sql_alchemy_conn = mysql://:@localhost:3306/

  • enregistrer le fichier

  • commande d'exécution

    flux d'air initdb

et c'est fait !

1voto

Jeremy Farrell Points 1073

Comme d'autres réponses l'ont indiqué, vous devez utiliser une autre base de données que SQLite. De plus, vous devez installer rabbitmq, le configurer de manière appropriée, et changer chacun de vos airflow.cfg pour avoir les bonnes informations sur rabbitmq. Pour un excellent tutoriel à ce sujet, voir Guide de construction d'un serveur/cluster Airflow .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X