气流:无法找到dag_id

时间:2017-04-05 15:09:14

标签: airflow

我在不同的AWS计算机上运行气流服务器和工作人员。 我已同步他们之间的dags文件夹,在两者上运行airflow initdb,并在我运行airflow list_tasks <dag_id>时检查dag_id是否相同

当我运行调度程序和worker时,我在worker上遇到了这个错误:

  

airflow.exceptions.AirflowException:找不到dag_id :. dag不存在或者无法解析。 [...]命令...-- local -sd /home/ubuntu/airflow/dags/airflow_tutorial.py'

似乎问题是路径错误(/home/ubuntu/airflow/dags/airflow_tutorial.py),因为正确的路径是/ home / hadoop / ...

在服务器计算机上,路径是使用ubuntu,但在两个配置文件上,它只是~/airflow/...

是什么让工人看到这条路而不是正确的呢?

如何告诉它查看自己的主页?

修改

  • 配置问题不太可能。我已经运行了grep -R ubuntu,并且唯一的例子是日志
  • 当我在用ubuntu作为用户的计算机上运行时,一切正常。这使我相信,由于某种原因,气流为工作人员提供了完成任务的全部途径

4 个答案:

答案 0 :(得分:12)

--raw参数添加到airflow run命令帮助我查看原始异常是什么。在我的例子中,元数据数据库实例太慢,并且由于超时而加载dags失败。我通过以下方式修复了它:

  • 升级数据库实例
  • 在airflow.cfg
  • 中增加参数dagbag_import_timeout

希望这有帮助!

答案 1 :(得分:1)

您是否尝试在配置文件中设置 dags_folder 参数,以明确指向/ home / hadoop /即所需的路径?

此参数控制查找dags的位置

答案 2 :(得分:1)

我遇到了同样的事情 - 工作进程似乎传递了与调度程序机器上的dags文件夹相对应的--sd参数,而不是工作机器上的参数{即使dags_folder设置正确在工作人员的气流配置文件中)。在我的情况下,我能够通过在调度程序主机上创建符号链接来使事情正常工作,以便dags_folder可以设置为相同的值。 (在您的示例中,这将意味着在调度程序计算机上创建符号链接/ home / hadoop - &gt; / home / ubuntu,然后将dags_folder设置为/ home / hadoop)。所以,这不是问题的答案,但在某些情况下这是一个可行的解决方法。

答案 3 :(得分:0)

  1. 将“airflow.cfg”中的 dags_folder 修改为你想要的目录
  2. 在列出您的气流任务时使用“-sd”段,例如“airflow list_tasks yourDagName -sd /opt/airflow/dags”

都有效