Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
气流中的Python脚本调度_Python_Apache Spark_Scheduling_Reload_Airflow - Fatal编程技术网

气流中的Python脚本调度

气流中的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

大家好,

我需要使用airflow计划python文件(其中包含从sql和一些连接中提取的数据)。我已经成功地将airflow安装到我的linux服务器中,并且我可以使用airflow的Web服务器。但是,即使阅读了文档,我也不清楚我到底需要在哪里编写用于调度的脚本,以及该脚本如何进入airflow Web服务器,以便查看状态

就配置而言,我知道dag文件夹在我的主目录中的位置以及示例dag的位置

注意:请不要将如何在Airflow中运行bash脚本文件标记为重复,因为我需要运行位于不同位置的python文件

请在Airflow Web服务器中找到以下配置:

下面是“主目录”中dag文件夹的屏幕截图

还可以找到下面的DAG创建截图和缺少DAG错误截图

在我选择了简单的DAG后,将填充缺少DAG的错误

您可能应该使用
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都在那里

  • 使用气流官方文档安装气流。在python虚拟环境中安装是个好主意。
  • 当我们第一次使用
  • airflow Web服务器-p

    它自动加载示例DAG,可以在中禁用 $HOME/airflow/airflow.cfg

    `load_examples = False`
    
  • 在$HOME/airflow/中创建dags文件夹,将tutorial.py文件放入
  • 进行一些实验,在tutorial.py中进行更改。如果您以cron语法给出schedule\u interval,那么
    '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()