填坑之pyspark在jupyter中运行报错及spark依赖python版本切换等

在ubantu成功安装配置spark等组件后,去pyspark编辑脚本运行,报出错误:Exception: Java gateway process exited before sending the driver its port number

尝试了大神建议的很多方法都没有解决,如配置JAVA_HOME路径、重装Java版本1.8等等,还有人说用anaconda可以完美解决,但懒于下载配置,且个人感觉annaconda较卡顿,在虚拟机中更是无法忍受。

继续在bashrc中配置:

export PYSPARK_SUBMIT_ARGS="--master local[2] pyspark-shell"          source .bashrc  刷新

至此jupyter notebook 打开浏览器可以正常编辑运行脚本了。

有时想打开pyspark后直接打开jupyter,可以这样设置:

export PYSPARK_DRIVER_PYTHON=jupyter-notebook
export PYSPARK_DRIVER_PYTHON_OPTS=" --ip=0.0.0.0 --port=0"  注:IP主机地址与端口在spark启动日志里可以查看,然后填上。

source .bashrc  刷新

spark内置的python的版本是2的版本,现在我想把python的版本切换成3的版本,步骤如下:

1.修改spark-env.sh文件,在末尾添加export PYSPARK_PYTHON=/usr/bin/python3。

2.修改spark安装包bin目录下的pyspark,将原来PYSPARK_PYTHON=python改成PYSPARK_PYTHON=python3。

3、如果是集群其它子节点也都要修改。

4、重启,可见修改成功。

 

还有另外一种报错比较奇怪,在pyspark命令行运行没有问题,但在jupyter中运行就报错,如:

intRDD = sc.parallelize([3,1,2,5,5])    print (intRDD.take(1))

Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe. : org.apache.spark.SparkException:。。。。。。。。。。。。。。

此时需要添加环境变量,指明pyspark依赖的python程序驱动路径:

export PYSPARK_DRIVER_PYTHON=/usr/bin/python3
export PYSPARK_PYTHON=/usr/bin/python3

具体路径根据安装目录确定,source后重启spark与jupyter。一切正常。

填坑之pyspark在jupyter中运行报错及spark依赖python版本切换等