我在不同的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
作为用户的计算机上运行时,一切正常。这使我相信,由于某种原因,气流为工作人员提供了完成任务的全部途径答案 0 :(得分:12)
将--raw
参数添加到airflow run
命令帮助我查看原始异常是什么。在我的例子中,元数据数据库实例太慢,并且由于超时而加载dags失败。我通过以下方式修复了它:
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)
都有效