LinuxサーバーJupyter NotebookでSparkを動かせるガイド

Spark Download

    • Spark Download Link

 

    解凍
tar -xzvf spark-3.0.1-bin-hadoop3.2.tgz

Java Installation

    • JDK Download

 

    • 今回はUbuntu[Windows Subsystem for Linux]を使うため、LinuxバージョンのJDK[jdk-8u261-linux-x64.tar.gz]をダウンロードする

 

    • JDK8 Download Link

 

    解凍
tar -xzvf jdk-8u261-linux-x64.tar.gz
    移動
mv  jdk1.8.0_261  /usr/env/java8
    JAVA_HOME設定
vim /etc/profile

最後に下記のコンテンツを追加

export JAVA_HOME=/usr/env/java8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    変動を有効
source  /etc/profile
    確認
java --version

Spark Configuration

この時Sparkのbin/pysparkを実行するとJAVA_HOME is not setというエラーはでます、原因は上記JAVA_HOMEを設定したけどSparkは認識できません。
Sparkのドキュメント[environment-variables]によるとconf/spark-env.shをちゃんと設定すれば良いと。

    Templateから設定ファイル作成
cp conf/spark-env.sh.template conf/spark-env.sh
    下記の設定を追加
JAVA_HOME=/usr/env/java8/
PYSPARK_PYTHON=/usr/bin/python3
SPARK_LOCAL_IP=<YOUR_LOCAL_IP_ADDRESS>

今はbin/pysparkは動けるようになりました。???

Jupyter Configuration

    Jupyter Notebook をインストール
apt install jupyter-notebook

conf/spark-env.shに下記の設定を追加


PYSPARK_DRIVER_PYTHON=jupyter-notebook
PYSPARK_DRIVER_PYTHON_OPTS=" --ip=0.0.0.0 --port=8888"

今はbin/pysparkを実行してBrowserでhttp://127.0.0.1:8888/?token=を開くとJupyter Notebookが開けます。
spark, scなどの引数も利用できる状態です。

※bin/pysparkを実行したらJupyter notebook URLが表示されない場合、Ctrl+Cを押すと表示します

おまけ

Jupyter Notebookパスワード設定
※設定するとパスワードでログインできる

jupyter notebook password
追記
20201223

df.show()を使う時に下記のExceptionが出ます

Exception: Python in worker has different version 3.8 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.

解決する方法はPYSPARK_PYTHONのバージョンとPYSPARK_DRIVER_PYTHONのバージョンを一致にします

conf/spark-env.shに下記の設定を修正します

PYSPARK_PYTHON=python3.6