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