Scala/Sparkプログラミングをjupyter+brunelで快適に♫
Scala/Sparkだいすきですが、今度働くことになる会社はPython文化。
Scalaだって、Jupyter Notebook使えるし、matplotlibみたいに、ビジュアライゼーションできるよ!ということをアピールしたい、というのがモチベーションです。
ScalaをJupyterで使うために
Jupyter NotebookはもともとPythonの開発用にiPython Notebookとして開発されていましたが、
最近はカーネルさえインストールすれば、BashでもRubyでも、なんでも動くようになっていますね。
ということで、今回はScala/Sparkが動くカーネルを入れて動かしてみます。
Scalaを動かすためのカーネルとしては、Apache Toreeを使います。
Toree以外にもJupyter Notebook用Scalaカーネルとしては以下もありますが、開発が活発そうなのと、Apache Incubatorプロジェクトになっているので、
Toreeを選びました。
* IScala
* ISpark
* jupyter-scala
Brunelとは
PythonでいうMatplotlibのようなビジュアライゼーションライブラリとして、Scalaでは、Brunelが使えます。
ちなみにBrunelはScala以外にもPythonとRでも使えます。
結構おしゃれなグラフが色々かけて楽しそうです。
インストール手順
Toreeをインストールして、Jupyter Notebookを起動してみます。
手順は簡単。
pip install https://dist.apache.org/repos/dist/dev/incubator/toree/0.2.0/snapshots/dev1/toree-pip/toree-0.2.0.dev1.tar.gz jupyter toree install --spark_home=/path/to/spark jupyter notebook
早速試してみる
val ds = spark.read.option("header","true").csv("/Users/chiehayashida/work/tmp/test.csv") ds.show() //+----+----+ //|col1|col2| //+----+----+ //| 1| 1| //| 2| 2| //| 3| 1| //| 4| 5| //| 5| 2| //+----+----+ // Brunelパッケージをダウンロード・インクルードする。 %AddJar -magic https://brunelvis.org/jar/spark-kernel-brunel-all-2.4.jar // brunelで描画するために%%brunelを入れる %%brunel data('ds') bar x(col1) y(col2:reverse) label(col2) legends(all) title("test")
気づいたこと
- Brunelの対応するSparkバージョン
Brunelでは現在Spark2.1以上には対応していないようで、
以下のエラーが出てしまう。
%%brunel data('ds') x(a) y(b) // エラー内容 //Magic brunel failed to execute with error: //org/apache/spark/sql/DataFrame
- 軸名の編集ができない Brunelで色々いじってみたけれど、X軸・Y軸の名前の編集ができなそう。