簡體   English   中英

如何在 Big Query 表中顯示 Airflow DAG 狀態

[英]How to display Airflow DAG status in Big Query tables

我想向 BQ 中的表顯示 DAG(氣流)最終狀態(成功/失敗)。 就像那個表可以包含:日期時間、DAG 名稱、狀態等列,它將根據 DAG 的最終狀態進行填充。

請幫忙; 如何做到這一點?

Airflow 中沒有現成的本機方法來實現此目的。但是,您可以自己實現一個 function,它將數據寫入 BigQuery 並通過 DAG 的on_success_callbackon_failure_callback方法運行它。

注意:BigQuery 不是事務型數據庫,並且對每天的插入次數有限制。 對於大量 DAG 運行,您可能會考慮將結果批量寫入 BigQuery。

如果您需要實時數據,我會 go 按照@Bas 建議的方法進行一些操作,可能使用 firestore 或 Cloud SQL。但是,如果您使用 BigQuery go,請注意他對每天插入的評論。

如果您可以每天等待結果,您可以按照此處所述將日志匯到 BigQuery: https://cloud.google.com/bigquery/docs/reference/auditlogs#stackdriver_logging_exports

在過濾條件中,您可以引入所有 Airflow 日志或僅引入來自工作程序/調度程序的日志。

防爆標准:

resource.type="cloud_composer_environment"
logName="projects/{YOUR-PROJECT}/logs/airflow-worker"

在日志 textPayload 中,您將看到類似以下內容:

Marking task as SUCCESS. dag_id=thing, task_id=stuff, executiondate=20220307T111111, start_date=20220307T114858, end_date=20220307T114859

然后,您可以在 BigQuery 中解析您需要的內容

補充用戶Bas Harenslak的答案。 您還可以探索以下選項:

  • 您可以使用TriggerDagRunOperator 通過使用它,您可以擁有一個 dag(一個recap-dag ),您的 DAG 將引用它以將記錄填充到目標數據集中。
trigger_recap_dag = TriggerDagRunOperator(
      task_id="trigger_recap_dag",
      trigger_dag_id="recap-dag",
      wait_for_completion=False,
      allowed_states=['success']
      conf='{"Time": datetime.now() ,"DAG": "recap-dag","Status":"success"}'
  )

ingestion >> transformation >> save >> send_notification >> trigger_recap_dag 
  • 如果你認為合適,這個recap-dag也可以是獨立的,並且只在你選舉的每個小時/天/周運行,並檢查你的 DAG 狀態。
with DAG(
  'recap-dag',
  schedule_interval='@daily',
  start_date=datetime(2021, 1, 1),
  catchup=False, 
) as dag:

  ...
  # Airflow >= 2.0.0
  # Inside a python Operator
  def GetRunningDagsInfo():
     dag_runs = DagRun.find(
       dag_id=your_dag_id,
       execution_start_date=your_start_date
       execution_end_date=your_end_date
     )
    
  ...
  • 您可以使用先前的選項並提供如下解決方案:

在你 dag(或 dags)完成后,它會觸發觸發 dag。 recap-dag會將您的 dag 記錄保存到自定義表或文件中,然后您的獨立 DAG 運行並檢索到目前為止已創建的數據集,並將數據推送到您的 BigQuery 表中。

  • 另一種選擇是查看您的 Airflow 數據庫以檢索運行信息。 稱為數據分析 出於安全考慮,它在最新版本中已被棄用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM