web-dev-qa-db-ja.com

Airflowは、構成から削除した後でも、サンプルのダグを表示し続けます

設定ファイルでload_examples = Falseをオフにした後でも、AirflowのサンプルデータはUIに残ります。

enter image description here

システムは、dagがdagフォルダーに存在しないことを通知しますが、スケジューラーがメタデータデータベースでアクティブとしてマークしたため、UIには残ります。

それらをそこから削除する1つの方法は、データベース内のこれらの行を直接削除することですが、もちろんこれは理想的ではありません。UIからこれらのデータを削除するにはどうすればよいですか?

8
fernandosjp

現在、DB内の対応する行を手動で削除する以外に、削除されたDAGがUIに表示されないようにする方法はありません。他の唯一の方法は、initdbの後にサーバーを再起動することです。

9
Him

エアフロー1.10+:

  • Airflow.cfgを編集し、load_examples = Falseを設定します
  • 各例のdagに対して、コマンドairflow delete_dag example_dag_to_deleteを実行します。

これにより、エアフローデータベース全体のリセットが回避されます。

(Airflow 1.10以降、データベースからdagを削除するコマンドがあります。 この回答 を参照してください)

2
Ena

Anacondaを介してエアフローをインストールしたと仮定します。それ以外の場合は、python site-packagesフォルダーで気流を探し、以下に従います。

指示に従った後 https://stackoverflow.com/a/43414326/182357

  • $ AIRFLOW_HOME/lib/python2.7/site-packages/airflowディレクトリに移動します
  • Example_dagsという名前のディレクトリを削除するか、名前を変更して元に戻します
  • Webサーバーを再起動します

cat $ AIRFLOW_HOME/airflow-webserver.pid | xargs kill-9

airflow webserver -p [ポート番号]

2
ghosts

間違いなくairflow resetdbはここで機能します。

私がしていることは、Webサーバーの起動、スケジューラーの起動、dagの更新など、さまざまな目的で複数のシェルスクリプトを作成することです。スクリプトを実行するだけで、必要な処理を実行できます。リストは次のとおりです。

(venv) (base) [pchoix@hadoop02 airflow]$ cat refresh_airflow_dags.sh
#!/bin/bash
cd ~
source venv/bin/activate
airflow resetdb
(venv) (base) [pchoix@hadoop02 airflow]$ cat start_airflow_scheduler.sh
#!/bin/bash
cd /home/pchoix
source venv/bin/activate
cd airflow
Nohup airflow scheduler >> "logs/schd/$(date +'%Y%m%d%I%M%p').log" &
(venv) (base) [pchoix@hadoop02 airflow]$ cat start_airflow_webserver.sh
#!/bin/bash
cd /home/pchoix
source venv/bin/activate
cd airflow
Nohup airflow webserver >> "logs/web/$(date +'%Y%m%d%I%M%p').log" &
(venv) (base) [pchoix@hadoop02 airflow]$ cat start_airflow.sh
#!/bin/bash
cd /home/pchoix
source venv/bin/activate
cd airflow
Nohup airflow webserver >> "logs/web/$(date +'%Y%m%d%I%M%p').log" &
Nohup airflow scheduler >> "logs/schd/$(date +'%Y%m%d%I%M%p').log" &

それらのスクリプトにchmod +xすることを忘れないでください

これがお役に立てば幸いです。

0
mdivk