气流中的Python脚本调度
大家好, 我需要使用airflow计划python文件(其中包含从sql和一些连接中提取的数据)。我已经成功地将airflow安装到我的linux服务器中,并且我可以使用airflow的Web服务器。但是,即使阅读了文档,我也不清楚我到底需要在哪里编写用于调度的脚本,以及该脚本如何进入airflow Web服务器,以便查看状态 就配置而言,我知道dag文件夹在我的主目录中的位置以及示例dag的位置 注意:请不要将如何在Airflow中运行bash脚本文件标记为重复,因为我需要运行位于不同位置的python文件 请在Airflow Web服务器中找到以下配置: 下面是“主目录”中dag文件夹的屏幕截图 还可以找到下面的DAG创建截图和缺少DAG错误截图 在我选择了简单的DAG后,将填充缺少DAG的错误气流中的Python脚本调度,python,apache-spark,scheduling,reload,airflow,Python,Apache Spark,Scheduling,Reload,Airflow,大家好, 我需要使用airflow计划python文件(其中包含从sql和一些连接中提取的数据)。我已经成功地将airflow安装到我的linux服务器中,并且我可以使用airflow的Web服务器。但是,即使阅读了文档,我也不清楚我到底需要在哪里编写用于调度的脚本,以及该脚本如何进入airflow Web服务器,以便查看状态 就配置而言,我知道dag文件夹在我的主目录中的位置以及示例dag的位置 注意:请不要将如何在Airflow中运行bash脚本文件标记为重复,因为我需要运行位于不同位置的p
您可能应该使用
PythonOperator
调用您的函数。如果您想在其他地方定义函数,只要可以在PYTHONPATH
中访问它,就可以从模块导入它
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from my_script import my_python_function
dag = DAG('tutorial', default_args=default_args)
PythonOperator(dag=dag,
task_id='my_task_powered_by_python',
provide_context=False,
python_callable=my_python_function,
op_args=['arguments_passed_to_callable'],
op_kwargs={'keyword_argument':'which will be passed to function'})
如果您的函数my\u python\u函数
位于脚本文件/path/to/my/scripts/dir/my\u script.py
然后,在启动Airflow之前,您可以将脚本的路径添加到PYTHONPATH
中,如下所示:
export PYTHONPATH=/path/to/my/scripts/dir/:$PYTHONPATH
更多信息请点击此处:
默认参数和教程中的其他注意事项:您还可以使用bashoperator在中执行python脚本。您可以将脚本放在DAG文件夹中的文件夹中。如果您的脚本在其他地方,只需给出这些脚本的路径即可
from airflow import DAG
from airflow.operators import BashOperator,PythonOperator
from datetime import datetime, timedelta
seven_days_ago = datetime.combine(datetime.today() - timedelta(7),
datetime.min.time())
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': seven_days_ago,
'email': ['airflow@airflow.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
}
dag = DAG('simple', default_args=default_args)
t1 = BashOperator(
task_id='testairflow',
bash_command='python /home/airflow/airflow/dags/scripts/file1.py',
dag=dag)
Airflow解析$Airflow_HOME/dags中的所有Python文件(在您的示例中为/HOME/amit/Airflow/dags)。python脚本应该重新运行一个DAG对象,如“postrational”的回答所示。 现在,当它被报告为丢失时,这意味着Python代码中存在一些问题,无法加载它。查看airflow Web服务器或调度程序日志以了解更多详细信息,因为stderr或stdout都在那里
airflow Web服务器-p
它自动加载示例DAG,可以在中禁用
$HOME/airflow/airflow.cfg
`load_examples = False`
'start\u date':datetime(2017,7,7)
dag=dag('tutorial',default_args=default_args,schedule_interval=“@once”)
或
dag=dag('tutorial',default_args=default_args,schedule_interval=“***”)#计划每分钟
$airflow Web服务器-p
$airflow scheduler
你好Navjot,谢谢你的建议。请指导您在评论中提到的在何处编写此脚本?对不起,我对airflow很陌生。希望你已经了解了,但对于其他人来说,还是在
dags
文件夹中dags
文件夹位置在airflow.cfg
中指定,该文件夹位于airflow\u HOME
dir.Hi@postrational中,感谢您的建议。请指导您在评论中提到的在何处编写此脚本?抱歉,我对airflow非常陌生。好吧,带有DAG定义的文件将放在您的airflow\u HOME/dags
目录中。带有Python函数的文件可以进入任何目录,只要它位于PYTHONPATH上。我在回答中添加了一些信息。嗨@postrational,包含DAG定义的文件的文件扩展名是什么。在我的气流配置中,DAG_文件夹被指定为/home/amit/afflow/dags,因此我仅将DAG定义放置在那里。。是吗?是的。DAG定义代码是Python,因此文件的扩展名应该是.py。我添加了相同的。。现在如何将其导入气流UI??我已经创建了DAG运行,并提供了DAG Id作为“教程”,但没有显示DAG条目表。谢谢。。。。python脚本存在问题。。解决了同样的问题。
'start_date': datetime.now()