执行Airflow clear清除任务是否会同步删除数据库中的数据?
问题解答
结论:不会。airflow clear 命令的操作对象仅为Airflow自身的元数据库,不会同步删除你业务数据库中留存的旧业务数据。
这条命令的实际作用是重置匹配范围内任务实例的运行状态,清除Airflow记录的这些任务的运行元数据、执行日志,把任务标记为待调度运行的状态,完全不会触达你业务侧存储数据的数据库。
你给出的命令各参数作用如下:
-d:级联清除匹配任务上下游依赖的任务实例状态-x:同步删除匹配任务实例关联的执行日志记录occupancy_reports.*:匹配occupancy_reportsDAG下的所有任务-t building:筛选任务ID匹配building的目标任务-s 2022-04-01 -e 2022-04-30:限定仅处理执行日期在2022年4月1日至2022年4月30日区间内的任务实例
如果要实现「删除旧数据后重跑写入全新数据」的需求,你需要在任务代码层面单独实现对应逻辑:
- 可以在任务的数据写入步骤前增加删数逻辑,先删除当前任务对应执行时间范围的旧业务数据,再执行新数据写入
- 也可以单独实现一个前置清数任务,和业务写入任务绑定依赖关系,确保重跑时先完成旧业务数据清理,再触发新数据写入
如果没有提前实现业务数据的清理逻辑,直接clear后重跑任务,很容易出现主键冲突、数据重复写入的问题。
内容的提问来源于stack exchange,提问作者rohitwtbs
相关产品推荐
相关产品推荐

