python - 应该在哪里放置 python 脚本以从 Airflow dag 运行它?
问题描述
我正在尝试在 Airflow 中运行一个简单的 dag 来执行 python 文件,它抛出错误无法打开文件'/User/....'。
下面是我正在使用的脚本。
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from airflow.operators.bash_operator import BashOperator
from airflow.operators.python_operator import PythonOperator
from datetime import datetime,timedelta
default_args = {
'owner': 'airflow',
'start_date': datetime(2021,3,2),
'depends_on_past': False,
'retries': 0
}
dag=DAG(dag_id='DummyDag',default_args=default_args,catchup=False,schedule_interval='@once')
command_load='python /usr/local/airflow/dags/dummy.py '
#load=BashOperator(task_id='loadfile',bash_command='python /Users/<user-id>/MyDrive/DataEngineeringAssignment/dummydata.py',dag=dag)
start=DummyOperator(task_id='Start',dag=dag)
end=DummyOperator(task_id='End',dag=dag)
dir >> start >> end
我有什么地方出错了吗?
解决方案
选项1:
文件位置 ( dummydata.py
) 相对于包含管道文件(DAG 文件)的目录。
dag=DAG(
dag_id='DummyDag',
...
)
load=BashOperator(task_id='loadfile',
bash_command='python dummydata.py',
dag=dag
)
选项 2: 将您的 template_searchpath 定义为指向 DAG 构造函数调用中的任何文件夹位置。
dag=DAG(
dag_id='DummyDag',
...,
template_searchpath=['/Users/<user-id>/MyDrive/DataEngineeringAssignment/']
)
load=BashOperator(task_id='loadfile',
# "dummydata.py" is a file under "/Users/<user-id>/MyDrive/DataEngineeringAssignment/"
bash_command='python dummydata.py ', # Note: Space is important!
dag=dag
)
有关更多信息,您可以在文档中阅读
推荐阅读
- here-olp - 我们可以从目录中删除版本或复制旧版本以使其成为最新版本吗?
- haskell - Haskell、Yesod 和 Keter - 我如何定期(每 5 分钟)运行一次例程?
- elasticsearch - 根据 term 字段过滤 elasticsearch bucket 聚合
- amazon-web-services - AWS IoT + 多环境 (dev/qa/uat/prod)
- reactjs - REACT.JS 在组件中管理状态与反应路由(链接)最佳实践
- fpdf - 如何在 Angular 5.0 中使用 FPDF 库
- python - 访问在 ubuntu 服务器上运行的 docker 上运行的 MySQL
- c++ - 如何在没有参数包的情况下扩展模式?
- powershell - 使用 powershell 将多个工作簿复制到一个工作簿中
- bash - 在 Bash 中使用正则表达式将字符串拆分为数组