Apache Spark:如何在python 3中使用pyspark


91

我从GH开发大师构建了Spark 1.4,并且构建顺利。但是当我这样做时,bin/pyspark我得到了Python 2.7.9版本。我该如何更改?


7
对于任何寻求如何执行此操作的用户:PYSPARK_DRIVER_PYTHON=ipython3 PYSPARK_DRIVER_PYTHON_OPTS="notebook" ./bin/pyspark,在这种情况下,它将运行IPython 3笔记本。
tchakravarty 2015年

Answers:


141

只需设置环境变量:

export PYSPARK_PYTHON=python3

如果您希望这是永久更改,请将此行添加到pyspark脚本中。


可以在/ etc / profile下编辑环境变量。保存配置文件后,请不要忘记执行“ source / etc / profile”,因此更改可以立即生效。
物理学家

1
显然,export PYSPARK_PYTHON=python3.5用于Python 3.5
Phyticist's

4
最好将其添加到$SPARK_HOME/conf/spark-env.sh这样,以便也spark-submit使用相同的解释器。
flow2k

@ flow2k是一个更好的主意。Tnx
Mohammad RaoofNia19年

32
PYSPARK_PYTHON=python3 
./bin/pyspark

如果要在IPython Notebook中运行,请编写:

PYSPARK_PYTHON=python3 
PYSPARK_DRIVER_PYTHON=ipython 
PYSPARK_DRIVER_PYTHON_OPTS="notebook" 
./bin/pyspark

如果python3无法访问,则需要传递路径。

请记住,当前文档(自1.4.1起)已过时说明。幸运的是,它已被修补


1
我认为您对IPython Notebook的命令不正确。应该是这样的:PYSPARK_PYTHON = python3 PYSPARK_DRIVER_PYTHON = ipython3 PYSPARK_DRIVER_PYTHON_OPTS =“ notebook” ./bin/pyspark
SpiderRico

@ChrisNielsen在终端中。
Piotr Migdal

@ChrisNielsen在Linux或OS X中是终端/控制台。我不知道它在Windows下如何工作(在Windows中,我仅在Docker容器上使用Spark)。
Piotr Migdal

@SpiderRico这些似乎在我的Mac上不起作用。为了使Jupyter Notebook适用于Spark,请使用以下命令。PYSPARK_PYTHON = python3 PYSPARK_DRIVER_PYTHON = jupyter PYSPARK_DRIVER_PYTHON_OPTS =“ notebook” ./bin/pyspark
Hank Chan

9

1,编辑个人资料:vim ~/.profile

2,将代码添加到文件中: export PYSPARK_PYTHON=python3

3,执行命令: source ~/.profile

4, ./bin/pyspark


4

看一下文件。shebang行可能指向“ env”二进制文件,该二进制文件在路径中搜索第一个兼容的可执行文件。

您可以将python更改为python3。更改环境以直接使用经过硬编码的python3二进制文件。或者直接使用python3执行二进制文件并省略shebang行。


1
是的,调查文件有帮助。需要设置PYSPARK_PYTHON环境变量。
tchakravarty 2015年

4

对于Jupyter Notebook,从命令行编辑spark-env.sh文件,如下所示

$ vi $SPARK_HOME/conf/spark-env.sh

转到文件底部并复制粘贴这些行

export PYSPARK_PYTHON=python3
export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS="notebook"

然后,只需运行以下命令即可在笔记本中启动pyspark

$ pyspark
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.