設定ファイルでload_examples = False
をオフにした後でも、AirflowのサンプルデータはUIに残ります。
システムは、dagがdagフォルダーに存在しないことを通知しますが、スケジューラーがメタデータデータベースでアクティブとしてマークしたため、UIには残ります。
それらをそこから削除する1つの方法は、データベース内のこれらの行を直接削除することですが、もちろんこれは理想的ではありません。UIからこれらのデータを削除するにはどうすればよいですか?
現在、DB内の対応する行を手動で削除する以外に、削除されたDAGがUIに表示されないようにする方法はありません。他の唯一の方法は、initdbの後にサーバーを再起動することです。
エアフロー1.10+:
load_examples = False
を設定しますairflow delete_dag example_dag_to_delete
を実行します。これにより、エアフローデータベース全体のリセットが回避されます。
(Airflow 1.10以降、データベースからdagを削除するコマンドがあります。 この回答 を参照してください)
Anacondaを介してエアフローをインストールしたと仮定します。それ以外の場合は、python site-packagesフォルダーで気流を探し、以下に従います。
指示に従った後 https://stackoverflow.com/a/43414326/182357
cat $ AIRFLOW_HOME/airflow-webserver.pid | xargs kill-9
airflow webserver -p [ポート番号]
間違いなく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
することを忘れないでください
これがお役に立てば幸いです。