学校一门Big Data Computing
需要学习Spark in Python。
这篇文章记录一下安装PySpark和Jupyter Notebook上运行Spark的步骤。
Prerequisite
我的系统是:Ubuntu 18.06 LTS
PySpark Installation Steps
1.去Spark downloads page.选择最新的Spark Release包(a prebuilt package for Hadoop), 然后直接下载。我现在的版本是Spark 2.3.1 (Jun 08 2018)。
- 去到下载文件夹,将文件移到home目录下并解压
$ cd Downloads
$ mv spark-2.3.1-bin-hadoop2.7.tgz ~/
$ tar -zxf spark-2.3.1-bin-hadoop2.7.tgz
3.声明一下环境变量
$ sudo vim ~/.bashrc
在文件尾部添加
export SPARK_HOME=/home/usrname/spark-2.3.1-bin-hadoop2.7
export PATH=$PATH:/home/username/spark-2.3.1-bin-hadoop2.7/bin
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.4-src.zip:$PYTHONPATH
export PATH=$SPARK_HOME/python:$PATH
重新运行一下刚刚修改的初始化文件
$ source ~/.bashrc
安装成功的话,输入pyspark
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/__ / .__/\_,_/_/ /_/\_\ version 2.3.1
/_/
Using Python version 2.7.15rc1 (default, Apr 15 2018 21:51:34)
SparkSession available as 'spark'.
我看到StackOverflow上面说,现在也可以直接运行
pip install pystark
来安装,但是貌似没有特别好去配置你的环境变量.我的同学是用PyPI
方法装的,现在开学第一周,也没瞧出什么区别,问了TA跟我说只要不影响你写project,什么安装方法都行。(吐槽一下:这什么鬼回答....)
PySpark in Jupyter
在Jupyter Notebook里运行PySpark有两种方法:
- 配置PySpark driver,当运行
pyspark
命令就直接自动打开一个Jupyter Notebook - 正常启动Jupyter Notebook,然后用findSpark的package(我选了这种)
方法一:配置PySpark driver
去~/.bashrc
文件最后,添加配置PySpark driver的环境变量
export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'
同样,运行一下刚刚修改的初始化文件
$ source ~/.bashrc
最后,重启terminal
$ pyspark
这个时候,就会自动打开Jupyter Notebook。
方法二:用findSpark包
安装findspark:
$ pip install findspark
启动jupyter notebook
$ jupyter notebook
Jupyter Notebook运行效果
附上代码,大家运行感受一下:
#方法2需要复制这三行
import findspark
findspark.init()
import pyspark
#方法1直接从这里开始复制
import random
sc = pyspark.SparkContext(appName="Pi")
num_samples = 100000000
def inside(p):
x, y = random.random(), random.random()
return x*x + y*y < 1
count = sc.parallelize(range(0, num_samples)).filter(inside).count()
pi = 4 * count / num_samples
print(pi)
sc.stop()
Output:
![img_1e714c182c488784193037d1ba9ad37c.png](https://yqfile.alicdn.com/img_1e714c182c488784193037d1ba9ad37c.png?x-oss-process=image/resize,w_1400/format,webp)
实测,Python3的运行速度会比Python2的快很多,我不知道为什么我们TA跟我说用“Python 2 is better。”
常见问题(不断更新)
1.Python使用spark时出現版本不同的错误
import os
#for python 3
os.environ["PYSPARK_PYTHON"]="/usr/bin/python3"
#for python 2
os.environ["PYSPARK_PYTHON"]="/usr/bin/python"
我的电脑上的python的路径是/usr/bin/python
,你可以运行where python
check一下你的Python2的安装路径