web-dev-qa-db-ja.com

PySparkでIPython Shellをロードする方法

コマンドラインからPySparkを使用できるIPythonシェル(IPythonノートブックではない)をロードしたい。それは可能ですか? Spark-1.4.1をインストールしました。

25
pg2455

Spark <1.2を使用する場合、bin/pysparkを環境変数IPYTHON=1で実行できます。

IPYTHON=1 /path/to/bin/pyspark

または

export IPYTHON=1
/path/to/bin/pyspark

上記はSpark 1.2以降でも動作しますが、これらのバージョンのPython環境を設定する推奨方法はPYSPARK_DRIVER_PYTHONです

PYSPARK_DRIVER_PYTHON=ipython /path/to/bin/pyspark

または

export PYSPARK_DRIVER_PYTHON=ipython
/path/to/bin/pyspark

ipythonを選択したインタープリターへのパスに置き換えることができます。

39
zero323

私はptpython(1)を使用します。これはipython機能とvi(1)またはemacs(1)キーバインド;また、動的コードポップアップセンス/インテリジェンスも提供します。これは、アドホックSPARK= CLIでの作業を行うときに非常に便利です。

以下に、私のvi-enabled ptpythonセッションがどのように見えるかを示します。screehshotの下部にあるVI(INSERT)モードに注意してください。 ipythonスタイルプロンプトと同様に、これらのptpython機能が選択されていることを示します(すぐに選択する方法の詳細)。

enter image description here

これをすべて取得するには、次の簡単な手順を実行します

user@linux$ pip3 install ptpython # Everything here assumes Python3

user@linux$ vi ${SPARK_HOME}/conf/spark-env.sh
    # Comment-out/disable the following two lines. This is necessary because
    # they take precedence over any UNIX environment settings for them:
       # PYSPARK_PYTHON=/path/to/python
       # PYSPARK_DRIVER_PYTHON=/path/to/python

user@linux$ vi ${HOME}/.profile # Or whatever your login RC-file is.
    # Add these two lines:
       export PYSPARK_PYTHON=python3           # Fully-Qualify this if necessary. (python3)
       export PYSPARK_DRIVER_PYTHON=ptpython3  # Fully-Qualify this if necessary. (ptpython3)

user@linux$ . ${HOME}/.profile  # Source the RC file.

user@linux$ pyspark
    # You are now running pyspark(1) within ptpython; a code pop-up/interactive
    # Shell; with your choice of vi(1) or emacs(1) key-bindings; and 
    # your choice of ipython functionality or not.

pypythonの設定(およびそれらの束があります)を選択するには、ptpythonセッション内からF2を押して、任意のオプションを選択します。欲しいです。

CLOSING NOTE:Python Spark Application(CLIを介してpyspark(1)と対話するのではなく、上記のように、単純にPYSPARK_PYTHONおよびPYSPARK_DRIVER_PYTHONをPythonでプログラム的に設定します。

os.environ['PYSPARK_PYTHON'] = 'python3'
os.environ['PYSPARK_DRIVER_PYTHON'] = 'python3' # Not 'ptpython3' in this case.

この回答とセットアップが役立つことを願っています。

7
NYCeyes

公式のGithubによると、IPYTHON = 1はSpark 2.0+では利用できません。代わりにPYSPARK_PYTHONとPYSPARK_DRIVER_PYTHONを使用してください。

https://github.com/Apache/spark/blob/master/bin/pyspark

2
Yang Bryan

spark> = 2.0のバージョンで、次の設定が.bashrcに追加される可能性がある場合

export PYSPARK_PYTHON=/data/venv/your_env/bin/python
export PYSPARK_DRIVER_PYTHON=/data/venv/your_env/bin/ipython
2
shengshan zhang

上記の答えはどれも私にとってはうまくいきませんでした。私はいつもエラーを受け取りました:

.../pyspark/bin/load-spark-env.sh: No such file or directory

私がしたことは、ipythonを起動し、Sparkセッションを手動で作成することでした:

from pyspark.sql import SparkSession
spark = SparkSession\
    .builder\
    .appName("example-spark")\
    .config("spark.sql.crossJoin.enabled","true")\
    .getOrCreate()

これを毎回行うことを避けるために、コードを~/.ispark.pyに移動し、次のエイリアスを作成しました(これを~/.bashrcに追加します):

alias ipyspark="ipython -i ~/.ispark.py"

その後、次のように入力して、iPythonでPySparkを起動できます。

ipyspark
2
stasdeep

ここに私のために働いたものがあります:

# if you run your ipython with 2.7 version with ipython2
# whatever you use for launching ipython Shell should come after '=' sign
export PYSPARK_DRIVER_PYTHON=ipython2

そして、SPARK_HOMEディレクトリから:

./bin/pyspark
2
pg2455

役立つことがわかったのは、特定の方法でSparkをロードするbashスクリプトを作成することです。これにより、異なる方法でSpark環境(ipythonやjupyterノートブックなど)。

これを行うには、ipython_spark.shと呼ばれるスクリプトなど、任意のテキストエディターを使用して空のスクリプトを開きます。

この例では、ipythonインタープリターでsparkを開くために使用するスクリプトを提供します。

#!/bin/bash
export PYSPARK_DRIVER_PYTHON=ipython

${SPARK_HOME}/bin/pyspark \
--master local[4] \
--executor-memory 1G \
--driver-memory 1G \
--conf spark.sql.warehouse.dir="file:///tmp/spark-warehouse" \
--packages com.databricks:spark-csv_2.11:1.5.0 \
--packages com.amazonaws:aws-Java-sdk-pom:1.10.34 \
--packages org.Apache.hadoop:hadoop-aws:2.7.3

Bash_profileでSPARK_HOMEが定義されていることに注意してください。ただし、pysparkがコンピューター上のどこにある場合でも、パス全体を挿入することができます。

このようなすべてのスクリプトを1か所に配置するのが好きなので、このファイルを「scripts」というフォルダーに入れます

この例では、bash_profileに移動して、次の行を入力する必要があります。

export PATH=$PATH:/Users/<username>/scripts
alias ispark="bash /Users/<username>/scripts/ipython_spark.sh"

これらのパスは、ipython_spark.shを配置した場所に固有であり、許可を更新する必要がある場合があります。

$ chmod 711 ipython_spark.sh

そして、bash_profileを入手します。

$ source ~/.bash_profile

私はMacを使用していますが、これはすべてLinuxでも機能するはずです。ただし、bash_profileではなく.bashrcを更新する可能性が高いでしょう。

この方法で私が気に入っているのは、異なる設定で複数のスクリプトを記述し、それに応じてspark=を開くことができることです。クラスターをセットアップする場合、異なるパッケージをロードするか、コアの数sparkは自由に使用できます。このスクリプトを更新するか、新しいスクリプトを作成できます。PYSPARK_DRIVER_PYTHON=の上の@ zero323で述べたように、Spark> 1.2を使用していますSpark 2.2

1
Jomonsugi