コマンドラインからPySparkを使用できるIPythonシェル(IPythonノートブックではない)をロードしたい。それは可能ですか? Spark-1.4.1をインストールしました。
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
を選択したインタープリターへのパスに置き換えることができます。
私はptpython(1)を使用します。これはipython機能とvi(1)またはemacs(1)キーバインド;また、動的コードポップアップセンス/インテリジェンスも提供します。これは、アドホックSPARK= CLIでの作業を行うときに非常に便利です。
以下に、私のvi-enabled ptpythonセッションがどのように見えるかを示します。screehshotの下部にあるVI(INSERT)モードに注意してください。 ipythonスタイルプロンプトと同様に、これらのptpython機能が選択されていることを示します(すぐに選択する方法の詳細)。
これをすべて取得するには、次の簡単な手順を実行します:
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.
この回答とセットアップが役立つことを願っています。
公式のGithubによると、IPYTHON = 1はSpark 2.0+では利用できません。代わりにPYSPARK_PYTHONとPYSPARK_DRIVER_PYTHONを使用してください。
spark> = 2.0のバージョンで、次の設定が.bashrcに追加される可能性がある場合
export PYSPARK_PYTHON=/data/venv/your_env/bin/python
export PYSPARK_DRIVER_PYTHON=/data/venv/your_env/bin/ipython
上記の答えはどれも私にとってはうまくいきませんでした。私はいつもエラーを受け取りました:
.../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
ここに私のために働いたものがあります:
# 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
役立つことがわかったのは、特定の方法で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