2016-04-24 9 views
5

provo a configurare Airbnb AirFlow per utilizzare il CeleryExecutor come questo:configurazione del flusso d'aria di lavorare con CeleryExecutor

ho cambiato il executer nel airflow.cfg da SequentialExecutor a CeleryExecutor:

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

Ma ottengo il seguente errore:

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

si noti che il sql_alchemy_conn è configurato in questo modo:

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

ho guardato di flusso d'aria GIT (https://github.com/airbnb/airflow/blob/master/airflow/configuration.py)

e ha scoperto che il codice seguente genera questa eccezione:

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'))) 

Sembra da questo metodo validate che il sql_alchemy_conn non possono contenere sqlite.

Avete qualche idea su come configurare CeleryExecutor senza sqllite? per favore nota che ho scaricato rabitMQ per lavorare con CeleryExecuter come richiesto.

risposta

13

Si dice da AirFlow che il CeleryExecutor richiede un altro back-end del database SQLite predefinito. È necessario utilizzare MySQL o PostgreSQL, ad esempio.

Il sql_alchemy_conn in airflow.cfg deve essere cambiato a seguire la struttura stringa di connessione SQLAlchemy (vedi SqlAlchemy document)

Ad esempio,

sql_alchemy_conn = postgresql+psycopg2://airflow:[email protected]:5432/airflow 
+0

Posso sapere Come aggiungere il collegamento mysql invece di PostgreSQL – abhijeetmote

+0

@abhijeetmote stringa di connessione msql per sqlalchemy può essere qualcosa del tipo 'mysql: // nomeutente: password @ hostname: port/database_name' – nehiljain

1

Per configurare flusso d'aria per mysql innanzitutto installare mysql this might help o basta google

  • goto direttore installazione flusso d'aria usu alleato/home // flusso d'aria
  • modificare airflow.cfg
  • individuare

    sql_alchemy_conn = SQLite: //// home/vipul/flusso d'aria/flusso d'aria.db

e aggiungere # davanti ad esso così sembra

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

se avete SQLite predefinita

  • aggiungere questa riga al di sotto

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

  • salvare il file

  • comando di marcia

    flusso d'aria initdb

e fatto!

1

Come altre risposte hanno dichiarato, è necessario utilizzare un database diverso oltre a SQLite. Inoltre, è necessario installare rabbitmq, configurarlo in modo appropriato e modificare ciascuno dei file airflow.cfg per ottenere le informazioni rabbitmq corrette. Per un eccellente tutorial su questo vedi A Guide On How To Build An Airflow Server/Cluster.

Problemi correlati