You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Apache Airflow中删除指定run_id的DAG运行实例?

删除特定run_id的DAG运行实例方法

当然可以删除带有特定run_id的DAG运行实例!不过Airflow CLI里并没有直接叫airflow delete_dag_run的命令,但有几种靠谱的方法能实现这个需求,我给你详细说下:

方法1:使用Airflow CLI的clear命令(推荐)

这是官方推荐的常用方式,clear命令不仅能清除任务实例,还可以精准指定要删除的DAG运行(通过run_id)。命令格式如下:

airflow dags clear -d <你的dag_id> -r <目标run_id> --yes
  • -d:指定要操作的DAG ID
  • -r:精确匹配要删除的运行实例的run_id
  • --yes:跳过确认提示,直接执行删除操作(不加的话会弹出确认对话框)

如果是Airflow 1.x版本,命令格式几乎一致,只需去掉dags前缀:

airflow clear -d <你的dag_id> -r <目标run_id> --yes

方法2:通过Airflow REST API删除

如果你习惯用API做自动化操作,可以发送DELETE请求到Airflow Webserver的API端点,示例命令如下:

curl -X DELETE "http://<你的airflow-webserver地址>:<端口>/api/v1/dags/<dag_id>/dagRuns/<run_id>"

如果你的Airflow开启了身份验证(比如基本认证),需要追加认证参数:

curl -u <用户名>:<密码> -X DELETE "http://<你的airflow-webserver地址>:<端口>/api/v1/dags/<dag_id>/dagRuns/<run_id>"

这个方法很适合集成到自动化脚本或其他系统中。

方法3:直接操作元数据库(不推荐,应急用)

如果CLI和API都无法使用,你可以直接操作Airflow的元数据库,但强烈不推荐这种方式——直接修改数据库可能导致数据不一致,操作前最好先暂停Airflow的调度和Web服务进程。

以PostgreSQL为例,执行以下SQL语句:

-- 删除指定的DAG运行记录
DELETE FROM dag_run WHERE dag_id = '<你的dag_id>' AND run_id = '<目标run_id>';

-- 同时删除关联的任务实例记录(建议同步删除,避免残留数据)
DELETE FROM task_instance WHERE dag_id = '<你的dag_id>' AND run_id = '<目标run_id>';

MySQL数据库的语法基本一致,无需调整。

内容的提问来源于stack exchange,提问作者Oleg Alexander

火山引擎 最新活动