Airflow 的调试与故障排查

Python 中的 Apache Airflow 入门

Mike Metzger

Data Engineer

常见问题

  • Dag 未按计划运行
  • Dag 无法加载
  • 语法错误

展示常见 Airflow 故障排查问题的插图

Python 中的 Apache Airflow 入门

Dag 未按计划运行

  • 至少有一个 schedule 周期尚未过去
    • 调整属性以满足需求
  • 运行资源不足
    • 增加系统资源
    • 增加更多节点
    • 调整 Dag 调度
Python 中的 Apache Airflow 入门

Dag 无法加载

  • Web UI 中无 Dag
  • airflow dags list 中无 Dag

可能的解决方案

  • 确认 Dag 文件在正确文件夹(Dags 文件夹外的文件不会解析)
  • 通过 airflow info 查找 Dags 文件夹路径

airflow info 的终端输出,突出显示 dags_folder 路径

Python 中的 Apache Airflow 入门

语法错误

  • Dag 文件不显示的最常见原因
  • Dag 中的错误有时不易定位
  • 三个快捷方法:

    • 在 Airflow UI 查看错误弹窗

    • 运行 airflow dags list-import-errors

    • 运行 python3 <dagfile.py>

Python 中的 Apache Airflow 入门

Airflow UI 导入错误

Airflow 欢迎页显示 Dag 导入错误警报

Airflow 导入错误详情,显示 Dag 回溯信息

Python 中的 Apache Airflow 入门

airflow dags list-import-errors

airflow dags list-import-errors 的终端输出,显示一个错误

Python 中的 Apache Airflow 入门

airflow dags reserialize

  • Dag 变更可能不会立即出现
  • 默认每 5 分钟检查一次 Dag 更新
  • 可通过 airflow dags reserialize 强制重新检查

终端运行 airflow dags reserialize 以强制刷新 Dag

Python 中的 Apache Airflow 入门

运行 Python 解释器

python3 dagfile.py

  • 有错误

使用 python3 运行 Dag 文件时的 Python 语法错误终端输出

  • 无错误

使用 python3 运行 Dag 文件无错误后返回提示符的终端

Python 中的 Apache Airflow 入门

Passons à la pratique !

Python 中的 Apache Airflow 入门

Preparing Video For Download...