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

时间:2015-04-30 16:02:59

标签: python apache-spark

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

4 个答案:

答案 0 :(得分:13)

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

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

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

PYSPARK_PYTHON='/opt/anaconda3/bin/python3'

查看configuration documentation了解详情。

答案 1 :(得分:10)

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

export PYSPARK_PYTHON=python2.7

它对我有用

答案 2 :(得分:0)

如果要在PYSPARK_MAJOR_PYTHON_VERSION命令行中指定选项spark-submit,则应检查以下内容:

http://spark.apache.org/docs/latest/running-on-kubernetes.html

您可以在此页面中搜索spark.kubernetes.pyspark.pythonVersion,并找到以下内容:

spark.kubernetes.pyspark.pythonVersion  "2" This sets the major Python version of the docker image used to run the driver and executor containers. Can either be 2 or 3.

现在,您的命令应如下所示:

spark-submit --conf spark.kubernetes.pyspark.pythonVersion=3 ...

应该可以。

答案 3 :(得分:-2)

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

myfile.py:

#!/full/path/to/specific/python2.7

或在命令行中调用它而脚本中没有shebang行:

/full/path/to/specific/python2.7 myfile.py

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

对于Python3官方文档,

Click here for an excellent guide to getting started with Virtual Environments[here]

如果您无法访问节点并且使用PySpark运行此节点,则可以指定Python version in your spark-env.sh

Spark_Install_Dir / CONF / spark-env.sh:

PYSPARK_PYTHON = /full/path/to/python_executable/eg/python2.7