如何在Spark中正确设置python版本?

如何在Spark中正确设置python版本?,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我的spark版本是2.4.0,它有python2.7和Python3.7。默认版本是python2.7。现在我想提交一个使用python3.7的pyspark程序。我试过两种方法,但都不管用 它不起作用,说 Cannot run program "/usr/bin/python3": error=13, Permission denied 但实际上,我有权限,比如说,我可以使用 /usr/bin/python3 test.py 运行python程序 这样,spark就根本不能使用pyth

我的spark版本是2.4.0,它有python2.7和Python3.7。默认版本是python2.7。现在我想提交一个使用python3.7的pyspark程序。我试过两种方法,但都不管用

  • 它不起作用,说

    Cannot run program "/usr/bin/python3": error=13, Permission denied
    
    但实际上,我有权限,比如说,我可以使用
    /usr/bin/python3 test.py
    运行python程序

  • 这样,spark就根本不能使用python3了


  • 根据我的经验,我发现在python脚本中包含spark位置往往更容易,因为使用
    findspark

    import findspark
    spark_location='/opt/spark-2.4.3/' # Set your own
    findspark.init(spark_home=spark_location) 
    

    我遇到了同样的问题

    在脚本开头(in)配置env的解决方案对我不起作用

    在不重新启动集群的情况下,只执行下面的命令对我有效

    sudo sed -i -e '$a\export PYSPARK_PYTHON=/usr/bin/python3' /etc/spark/conf/spark-env.sh
    

    您在哪里添加导出?您应该将它们放在spark-env.sh中并重新启动集群。此外,您还可以“作弊”并将它们放入此处报告的.py主文件中:我已经尝试了链接()中提到的方法,但仍然不起作用,并说“无法运行程序”/usr/bin/python3”:error=13,权限被拒绝“您确定有权限吗?”?实际运行.py文件的用户可能与运行原始spark submit cmd的用户不同。你有没有检查过你是否有代理用户设置?如果你把自己添加为一个超级用户,这可能会有所帮助。请看这里:当然,只有当您在纱线上运行Spark时,上述内容才有效。
    import findspark
    spark_location='/opt/spark-2.4.3/' # Set your own
    findspark.init(spark_home=spark_location) 
    
    sudo sed -i -e '$a\export PYSPARK_PYTHON=/usr/bin/python3' /etc/spark/conf/spark-env.sh