次のように、CeleryExecutorを使用するようにAirbnb AirFlowを構成しようとします。
Airflow.cfgのexecuter
をSequentialExecutor
からCeleryExecutor
に変更しました。
# The executor class that airflow should use. Choices include
# SequentialExecutor, LocalExecutor, CeleryExecutor
executor = CeleryExecutor
しかし、私は次のエラーを受け取ります:
airflow.configuration.AirflowConfigException: error: cannot use sqlite with the CeleryExecutor
sql_alchemy_conn
は次のように構成されています。
sql_alchemy_conn = sqlite:////root/airflow/airflow.db
AirflowのGITを確認しました( https://github.com/airbnb/airflow/blob/master/airflow/configuration.py )
そして、次のコードがこの例外をスローすることがわかりました:
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')))
このvalidate
メソッドから、sql_alchemy_conn
にsqlite
を含めることはできません。
SqlliteなしでCeleryExecutor
を設定する方法はありますか?必要に応じて、CeleryExecuterを操作するためにrabitMQをダウンロードしたことに注意してください。
AirFlowによると、CeleryExecutor
にはデフォルトのデータベースSQLite以外のバックエンドが必要です。たとえば、MySQL
またはPostgreSQL
を使用する必要があります。
sql_alchemy_conn
in airflow.cfg
は、SqlAlchemy接続文字列構造に従うように変更する必要があります( SqlAlchemyドキュメント を参照)
例えば、
sql_alchemy_conn = postgresql+psycopg2://airflow:[email protected]:5432/airflow
Mysql用にAirflowを構成するには、まずmysqlをインストールします これは役立つ場合があります または単にそれをグーグル
見つける
sql_alchemy_conn = sqlite:////home/vipul/airflow/airflow.db
その前に#を追加して、次のようにします
#sql_alchemy_conn = sqlite:////home/vipul/airflow/airflow.db
デフォルトのsqliteがある場合
この行を下に追加
sql_alchemy_conn = mysql://:@localhost:3306 /
ファイルを保存する
コマンドを実行する
気流initdb
やった!
Kubernetesクラスターで実行する場合。次の構成を使用します。
airflow:
config:
AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://postgres:airflow@airflow-postgresql:5432/airflow
他の回答で述べたように、SQLite以外に別のデータベースを使用する必要があります。さらに、rabbitmqをインストールして適切に構成し、正しいrabbitmq情報が含まれるように各airflow.cfgを変更する必要があります。これに関する優れたチュートリアルについては、 Airflowサーバー/クラスターの構築方法に関するガイド を参照してください。