[英]Airflow CLI: How to get status of dag tasks in Airflow 1.10.12?
[英]How to display Airflow DAG status in Big Query tables
我想向 BQ 中的表显示 DAG(气流)最终状态(成功/失败)。 就像那个表可以包含:日期时间、DAG 名称、状态等列,它将根据 DAG 的最终状态进行填充。
请帮忙; 如何做到这一点?
Airflow 中没有现成的本机方法来实现此目的。但是,您可以自己实现一个 function,它将数据写入 BigQuery 并通过 DAG 的on_success_callback
和on_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
的答案。 您还可以探索以下选项:
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 表中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.