今天花了一些时间来整理mac osx系统下用anaconda环境配置pyspark+jupyter notebook启动的整个过程。
背景介绍:
我原本用的是anaconda 2.7版本,创建了python3的环境变量,安装了python3,虽然在jupyter notebook能够正常导入pyspark,但是对rdd算子聚合后计数总会报错。
jupyter notebook文件
python in worker has different version 2.7 than that in driver 3.6, PySpark cannot run with different minor versions.Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set.
应该是需要修改环境变量。
修改环境变量一般在终端修改.bash_profile文件
#在终端键入
$vi ./.bash_profile
#然后在打开的文件当中加上以下这些内容
export SPARK_HOME=~spark-2.3.1-bin-hadoop2.7#这里是指明了SPARK要调用的路径,就是你解压缩的文件
export PATH="$PARK_HOME/bin:$PATH"#这里将上面的环境变量加入到应用程序的执行搜索路径
export PYSPARK_DRIVER_PYTHON="jupyter"#这里指定pyspark的启动形式是jupyter notebook
export PYSPARK_DRIVER_PYTHON_OPTS="notebook"
#对于python3还需要制定python的版本
export PYSPARK_PYTHON=python3
alias snotebook='$SPARK_PATH/bin/pyspark --master local[2]'#这里主要说的是用本地两个核来启动pyspark
退出以后在终端键入使之修改成效
$source ~/.bash_profile
关闭终端,重新启动。
仍然是会报错:
Cannot run program "//anaconda/envs/python3": error=13, Permission denied
似乎是没有权限启动python3,因为我本身默认的python是2.7版本。
弄了一下午也没明白如何修改权限使得python3能够和pyspark和谐共处,最终下了anaconda3,重新安装。保持上面.bash_profile文件不改。
接下来要安装spark 2.3版本,在这里注意,之前python3和原本的spark 2.1版本是不共存的,所以之前不能运行也是有大理的。下载完之后放到home/目录下,解压缩(这里的路径就是上面SPARK_HOME的路径,是对应起来的)。
接下来有了spark可以安装pyspark了。
终端键入以下语句,安装pyspark
$conda install pyspark
到了这里就可以启动了。
$jupyter notebook /Users/chenlinlin/Desktop/spark_practice_dataset/rating_counter.ipynb
启动之后,发现rating可以用countByValue
方法了,不会报之前的错误。
在这里总结几点:
- python3和spark 2.1版本不兼容,所以要升级到spark 2.3版本。
- 下载的anaconda2配置了python3的环境,但是pyspark不知道为什么在kernel为python3的情况下,设置pyspark_python环境变量为python3也无法运行。所以最好就是直接安装anaconda3,只有python3的环境。
- 按照步骤来:安装anaconda3->下载spark 2.3->安装pyspark->修改.bash_profile文件的环境变量,是最快的解决路径。
- 要将一些大的安装包备份好,这样就可以省去很多下载时间。
网友评论