繁体   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