天天看點

PySpark安裝+Jupyter Notebook配置(Ubuntu 18.06)

學校一門

Big Data Computing

需要學習Spark in Python。

這篇文章記錄一下安裝PySpark和Jupyter Notebook上運作Spark的步驟。

Prerequisite

我的系統是:Ubuntu 18.06 LTS

  1. 已經裝好了python2和3(如果沒有可以看看這個 連結 )
  2. 裝好了jupyter notebook,沒有的話自行google吧
  3. 裝了Java 8或更高版本的Java(沒有,也可以看看這個

PySpark Installation Steps

1.去

Spark downloads page

.選擇最新的Spark Release包(a prebuilt package for Hadoop), 然後直接下載下傳。我現在的版本是

Spark 2.3.1

(Jun 08 2018)。

  1. 去到下載下傳檔案夾,将檔案移到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有兩種方法:

  1. 配置PySpark driver,當運作

    pyspark

    指令就直接自動打開一個Jupyter Notebook
  2. 正常啟動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:

PySpark安裝+Jupyter Notebook配置(Ubuntu 18.06)
實測,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的安裝路徑

參考連結

Get Started with PySpark and Jupyter Notebook in 3 Minutes