お仕事でSparkをJupyter Notebook (Python 3) から使うかもしれないということで、PySparkの実験用環境をDockerで構築する方法について調べました。
今回は、PySpark APIを使ったJupyter Notebookの動作確認をローカルで完結できるようにすることをゴールにします (別ノードで計算させようとすると、sparkmagicやlivyの導入・設定が必要となるようです) 。
最初にpyspark-notebookイメージをプルして起動します。このイメージは、Jupyter Notebookのイメージ (jupyter/scipy-notebook) をベースに、Sparkのダウンロードや環境変数の設定 (SPARK_HOME
やSPARK_OPTS
など) が行われています。
https://hub.docker.com/r/jupyter/pyspark-notebook/
$ docker pull jupyter/pyspark-notebook $ docker images jupyter/pyspark-notebook REPOSITORY TAG IMAGE ID CREATED SIZE jupyter/pyspark-notebook latest 50a39e5a0bf6 3 days ago 5.45GB $ docker run -p 8890:8888 -v /tmp/pyspark-notebook:/home/jovyan/work jupyter/pyspark-notebook start-notebook.sh
次に、Webブラウザを開いて、起動したJupyter Notebookへアクセスします (上の場合ですと、"http://localhost:8890"です) 。トークンが聞かれますので、起動時のコンソールで表示されるトークンを入力しましょう (最初からトークン付きURL "ttp://localhost:8890/?token=xxxxxxxx" でアクセスしても良いです) 。
Jupyter Notebook上でTerminalを開き、pysparkのシェルが起動できることを確認します。また"sc"でSparkContextインスタンスにもアクセスできることも確認できます。
では、Jupyter NotebookでPython 3のファイルを新規作成し、手始めにSparkContextを表示できることを確認します。
あとはPySparkのAPIで計算できるようになります (公式ドキュメントはこちら) 。
data = [1, 2, 3, 4, 5] rdd = sc.parallelize(data) rdd.sum() # 15