2016-04-28 10 views
7

Pythonを使ってSpark Context変数scを読み込むようにIPythonノートブックを設定する方法についていくつかのチュートリアルを見つけました(このようなもの:http://ramhiser.com/2015/02/01/configuring-ipython-notebook-support-for-pyspark/)。ジュピターノートブックの起動時にカスタムPythonスクリプトを実行する方法(Sparkを起動する)?

問題は、IPython Notebookの代わりにJupyter Notebookを使用しているので、IPython(これは~/.ipython/profile_pyspark/startup/00-pyspark-setup.pyにあるはずです)のようにSpark Context変数をロードするためのセットアップスクリプトを作成できません。

問題は次のとおりです。起動時にスクリプト00-pyspark-setup.pyを実行するJupyter Notebookの設定は何ですか?

+0

サウンズ/github.com/apache/incubator-toree)。しかし、セットアップにはいくらかの努力が必要です。 –

答えて

2

EDIT

オリジナルの答えはまだ動作しますが、それは扱いにくいであり、我々は変数に建てPySparkを使用して、今日、次のメソッドを使用する必要があります。

export PYSPARK_DRIVER_PYTHON=jupyter 
export PYSPARK_DRIVER_PYTHON_OPTS="notebook" 

それからちょうどあなたのような直接PySparkを実行します上記の変数が設定されていれば、シェルではなくジュピターノートブックを起動します:

cd path/to/spark 
bin/pyspark --master local[*] # Change to use standalone/mesos/yarn master and add any spark config 

新しいノートブックを起動すると、あなたのためにSparkが設定されています。あなたはまだipython profile create pysparkを使用してプロファイルを作成すなわち、同じ初期段階で物事を設定することができます

export PYSPARK_DRIVER_PYTHON_OPTS="notebook --ip='*' --no-browser" 

ORIGINAL ANSWER

:ご使用の環境に合うようにしたい場合は、Juopyterになど、他のオプションを追加することができます起動スクリプトを$(ipython profile locate pyspark)/startup/に配置します。

次に、Jupyterノートブックで利用できるようにするには、ファイル$(ipython locate)/kernels/pyspark/kernel.jsonを作成して、そのプロファイルを使用するカーネルを指定する必要があります。これは私がどのように見えるかです:

{ 
    "display_name": "PySpark", 
    "language": "python", 
    "argv": [ 
    "python", 
    "-m", "ipykernel", 
    "--profile=pyspark", 
    "-f", "{connection_file}" 
    ], 
    "env": { 
    "PYSPARK_SUBMIT_ARGS": " --master spark://localhost:7077 --conf spark.driver.memory=20000m --conf spark.executor.memory=20000m" 
    } 
} 

重要なビットがargvセクションにあります。あなたはそれはあなたがリンクされ1、カーネルで定義されているだけでプラスの引数、およびほかと非常によく似て見ることができるように

import os 
import sys 

spark_home = '/opt/spark/' 
os.environ["SPARK_HOME"] = spark_home 
sys.path.insert(0, spark_home + "/python") 
sys.path.insert(0, os.path.join(spark_home, 'python/lib/py4j-0.9-src.zip')) 

pyspark_submit_args = os.environ.get("PYSPARK_SUBMIT_ARGS", "") 
pyspark_submit_args += " pyspark-shell" 
os.environ["PYSPARK_SUBMIT_ARGS"] = pyspark_submit_args 

filename = os.path.join(spark_home, 'python/pyspark/shell.py') 
exec(compile(open(filename, "rb").read(), filename, 'exec')) 

envセクションの情報は、私が使用して起動スクリプトによってピックアップされますPySparkの最新バージョンに必要な引数はpyspark-shellです。

聖霊降臨祭これ、あなたは、jupyter notebookを実行し、ブラウザでのメインページを開くと、あなたは今、この新しいカーネルを使用してノートブックを作成することができますすることができます:/:あなたは[ApacheのToree](HTTPSたいよう

create new pyspark notebook

+1

あなたの答えは@sgvdをありがとう、私は近いと思う。私は実際にカーネルを作成しました。そして今、私のJupyter NotebookはPySparkの新しいノートブックを公開しています。しかし、私のノートブックが(カーネルPySparkを使って) 'sc'を実行すると、空の文字列を返します...(Sparkがロードされていないことを意味します)あなたのスクリプトに対して行った唯一の変更は' spark_home'の場所とpy4jのバージョンを変更することでした。私は 'kernel.json'を変更しませんでした(特に' {connection_file} '?) – htaidirt

+0

あなたはどのバージョンのSparkを使用していますか?これは少なくとも1.6.xでは私にとってはうまくいく。また、正しいマスターURLを使用していることを確認してください。私の答えである「spark:// localhost:7077」は、Jupyterと同じマシン上で実行されているSparkスタンドアロン・クラスタ用です。 MesosまたはYarnを使用している場合、あなたのマスターを別の場所で実行させるか、マスターが 'localhost'でリッスンしない場合は、これを変更する必要があります。 – sgvd

+0

あなたはそれを働かせてくれましたか? – sgvd