我有两个版本的Python。当我使用spark-submit启动spark应用程序时,应用程序使用默认版本的Python。但是,我想使用另一个。 如何指定要使用的spark-submit的Python版本?
答案 0 :(得分:13)
您可以将PYSPARK_PYTHON
中的conf/spark-env.sh
变量(在Spark的安装目录中)设置为所需Python可执行文件的绝对路径。
默认情况下,Spark分发包含spark-env.sh.template
(Windows上为spark-env.cmd.template
)。必须先将其重命名为spark-env.sh
(spark-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的完整路径。
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