如何指定要使用的spark-submit的Python版本?

A7m*_*med 24 python apache-spark

我有两个版本的Python.当我使用spark-submit启动spark应用程序时,应用程序使用默认版本的Python.但是,我想使用另一个.如何指定要使用的spark-submit的Python版本?

Ben*_*ell 16

您可以将(在Spark的安装目录中)的PYSPARK_PYTHON变量设置为conf/spark-env.sh所需Python可执行文件的绝对路径.

默认情况下,Spark分发包含spark-env.sh.template(spark-env.cmd.template在Windows上).必须首先将其重命名为spark-env.sh(spark-env.cmd).

例如,如果安装了Python可执行文件/opt/anaconda3/bin/python3:

PYSPARK_PYTHON='/opt/anaconda3/bin/python3'
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请查看配置文档.

  • 在帖子链接的[文档](https://spark.apache.org/docs/latest/configuration.html#environment-variables)中,它说“当在集群模式下在 YARN 上运行 Spark 时,环境变量需要使用conf/spark-defaults.conf 文件中的spark.yarn.appMasterEnv.[EnvironmentVariableName] 属性进行设置”。我所做的是在调用“spark-submit”时将“--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=python2”和“--conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=python2”作为选项传递。这为我解决了。 (2认同)

Bru*_*ria 10

在我的环境中,我只是使用了

export PYSPARK_PYTHON=python2.7
Run Code Online (Sandbox Code Playgroud)

它对我有用

  • 仅当“python2.7”的路径位于“PATH”环境变量中时它才有效。最好使用 Python 可执行文件的绝对路径。 (2认同)

小智 -3

您可以通过在脚本的 shebang 行中列出安装路径来指定 Python 版本:

myfile.py:

#!/full/path/to/specific/python2.7
Run Code Online (Sandbox Code Playgroud)

或者在脚本中不使用 shebang 行的情况下在命令行上调用它:

/full/path/to/specific/python2.7 myfile.py
Run Code Online (Sandbox Code Playgroud)

不过,我建议您研究一下 Python 优秀的虚拟环境,它允许您为每个版本的 Python 创建单独的“环境”。虚拟环境在激活后或多或少会通过处理所有路径规范来工作,让您只需键入即可,python myfile.py而不必担心依赖项冲突或知道特定版本的 python 的完整路径。

单击此处获取虚拟环境入门的优秀指南,[此处]获取 Python3 官方文档。

如果您无权访问节点并且使用 PySpark 运行此节点,则可以在以下位置指定 Python 版本spark-env.sh

Spark_Install_Dir/conf/spark-env.sh:

PYSPARK_PYTHON = /full/path/to/python_executable/eg/python2.7
Run Code Online (Sandbox Code Playgroud)