sparkmagicを使用すると、jupyter上でSparkクラスタの処理が可能になる。
導入方法は参考リンクを参照。
ノートブック形式で作業をまとめられるのが便利な反面、
sparkmagic特有の問題とかもあるので、まとめてみる。
Tips
一定時間使用しないと、Livyセッションが終了してしまう
デフォルトだと1時間で終了するみたい。
livy.confで「livy.server.session.timeout」を任意の値を変える。
SQLモードで「IOPub data rate exceeded」エラー
jupyter_notebook_config.pyの値を増やす。
jupyter_notebook_config.pyはデフォルトでは、~/.jupyter/配下にある。
jupyter_notebook_config.py
c.NotebookApp.iopub_data_rate_limit = 1000000
matplotlibが利用できない
Livyで、matplotlibの結果は受け取れないみたい。
Spark DataFrameをregisterTempTableで一時テーブルとして、
SQLモードでローカルへ出力する。
そうすると、ローカルモードでPandasのDataFrameとして値が受け渡されるので、それを使ってグラフを描く。
ローカルモードでjupyterが参照しているpythonカーネルは、PySparkカーネルとは違うので、処理に必要なライブラリは別途設定する必要がある。
SQLからlocalへのデータ受け渡し
%%sql -o plot_data
select * from spark_dataframe
localでの値参照
%%local
%matplotlib inline
plot_data # SQLモードで-oで指定した変数名で参照できる