嗨,大家好,
我需要使用气流安排我的python files(which contains data extraction from sql and some joins) . 我已经成功地将气流安装到我的linux服务器中,我可以使用气流网络服务器 . 但即使在完成文件后我也不清楚 where exactly I need to write script for scheduling and how will that script be available into airflow webserver so I could see the status
就配置而言,我知道dag文件夹在我的主目录中的位置以及示例dags所在的位置 .
Note: 请不要将此标记为重复,如何在Airflow中运行bash脚本文件,因为我需要运行位于不同位置的python文件 .
4 回答
您应该使用
PythonOperator
来调用您的函数 . 如果您想在其他地方定义该功能,只需在PYTHONPATH
中访问该模块即可从模块中导入 .如果您的函数
my_python_function
在脚本文件中/path/to/my/scripts/dir/my_script.py
然后在启动Airflow之前,您可以将脚本的路径添加到
PYTHONPATH
,如下所示:更多信息:https://airflow.incubator.apache.org/code.html#airflow.operators.PythonOperator
默认args和教程中的其他注意事项:https://airflow.incubator.apache.org/tutorial.html
您还可以使用bashoperator在Airflow中执行python脚本 . 您可以将脚本放在DAG文件夹中的文件夹中 . 如果您的脚本位于其他位置,只需提供这些脚本的路径即可 .
Airflow解析$ AIRFLOW_HOME / dags中的所有Python文件(在你的情况下为/ home / amit / airflow / dags) . 并且该python脚本应该返回一个DAG对象,如“postrational”的回答所示 . 现在当它被报告为缺失时,这意味着Python代码中存在一些问题,并且Airflow无法加载它 . 检查气流网络服务器或调度程序日志以获取更多详细信息,因为stderr或stdout会在那里 .
使用Airflow官方文档安装气流 . 最好在python虚拟环境中安装 . http://python-guide-pt-br.readthedocs.io/en/latest/dev/virtualenvs/
当我们第一次使用时开始气流
airflow webserver -p <port>
它自动加载示例dags,可以在$ HOME / airflow / airflow.cfg中禁用
在$ HOME / airflow /中创建 dags 文件夹,将tutorial.py文件放在 dags 文件夹中https://airflow.incubator.apache.org/tutorial.html
做一些实验,在tutorial.py中进行更改 . 如果您将schedule_interval作为cron语法,那么
'start_date' : datetime(2017, 7, 7)
dag = DAG('tutorial', default_args=default_args,schedule_interval="@once")
或dag = DAG('tutorial', default_args=default_args,schedule_interval="* * * * *") # schedule each minute
启动气流:
$ airflow webserver -p <port>
启动调度程序:
$ airflow scheduler