web-dev-qa-db-ja.com

環境変数PYSPARK_PYTHONおよびPYSPARK_DRIVER_PYTHON

最近pysparkをインストールしました。正しくインストールされました。 Pythonで次の簡単なプログラムを使用すると、エラーが発生します。

>>from pyspark import SparkContext
>>sc = SparkContext()
>>data = range(1,1000)
>>rdd = sc.parallelize(data)
>>rdd.collect()

最後の行を実行しているときに、キー行が

[Stage 0:>                                                          (0 + 0) / 4]18/01/15 14:36:32 ERROR Executor: Exception in task 1.0 in stage 0.0 (TID 1)
org.Apache.spark.api.python.PythonException: Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/pyspark/python/lib/pyspark.Zip/pyspark/worker.py", line 123, in main
    ("%d.%d" % sys.version_info[:2], version))
Exception: Python in worker has different version 2.7 than that in driver 3.5, PySpark cannot run with different minor versions.Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set.

.bashrcに次の変数があります

export SPARK_HOME=/opt/spark
export PYTHONPATH=$SPARK_HOME/python3

私はPython 3。

7
Akash Kumar

ちなみに、PyCharmを使用している場合は、PYSPARK_PYTHONおよびPYSPARK_DRIVER_PYTHON以下の画像ごとに構成を実行/デバッグします enter image description here

8
buxizhizhoum

$SPARK_HOME/conf/spark-env.shで次の環境変数を設定する必要があります。

export PYSPARK_PYTHON=/usr/bin/python
export PYSPARK_DRIVER_PYTHON=/usr/bin/python

spark-env.shが存在しない場合は、spark-env.sh.templateの名前を変更できます

7
Alex

Archlinux上のApache-Spark 2.4.3

Apache-Spark-2.3.4Apache-Spark Webサイト からインストールしたばかりで、 Archlinuxディストリビューションを使用しています 、シンプルで軽量なディストリビューションです。そこで、Apache-sparkディレクトリを/opt/Apache-spark/にインストールして配置しました。今度は環境変数をエクスポートします。Archlinuxを使用していることを忘れないでください。たとえば、$Java_HOMEの使用に留意してください。

環境変数のインポート

echo 'export Java_HOME=/usr/lib/jvm/Java-7-openjdk/jre' >> /home/user/.bashrc
echo 'export SPARK_HOME=/opt/Apache-spark'  >> /home/user/.bashrc
echo 'export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH'  >> /home/user/.bashrc
echo 'export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.10.7-src.Zip:$PYTHONPATH'  >> /home/user/.bashrc
source ../.bashrc 

テスト中

emanuel@hinton ~ $ echo 'export Java_HOME=/usr/lib/jvm/Java-7-openjdk/jre' >> /home/emanuel/.bashrc
emanuel@hinton ~ $ echo 'export SPARK_HOME=/opt/Apache-spark'  >> /home/emanuel/.bashrc
emanuel@hinton ~ $ echo 'export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH'  >> /home/emanuel/.bashrc
emanuel@hinton ~ $ echo 'export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.10.7-src.Zip:$PYTHONPATH'  >> /home/emanuel/.bashrc
emanuel@hinton ~ $ source .bashrc 
emanuel@hinton ~ $ python
Python 3.7.3 (default, Jun 24 2019, 04:54:02) 
[GCC 9.1.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyspark
>>> 

SparkContextの環境変数を正しくインポートしたため、すべて正常に動作しています。

DockerImageを介してArchlinuxでApache-Sparkを使用する

使用目的のために、pythonjupyter-notebookApache-spark-2.3.4を使用してDockerイメージを作成しました

画像を実行する

docker run -ti -p 8888:8888 emanuelfontelles/spark-jupyter

ブラウザに移動して入力するだけです

http://localhost:8888/tree

認証ページが表示され、ターミナルに戻ってトークン番号と出来上がりをコピーし、Apache-Sparkディストリビューションを実行しているArchlinuxコンテナーをコピーします。

0

コードの冒頭で次のコードを実行してください。 Python3.7を使用しています。 Pythonパスを取得するにはlocate python3.7を実行する必要があるかもしれません。

import os
os.environ["PYSPARK_PYTHON"] = "/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7"
0
James Chang

同じ問題が発生し、両方の変数を.bash_profileに設定しました

export PYSPARK_PYTHON=/usr/local/bin/python3
export PYSPARK_DRIVER_PYTHON=/usr/local/bin/python3

しかし、私の問題はまだそこにあります。

次に、デフォルトがpythonバージョンがpython 2.7 python --version

そこで、以下のページに従って問題を解決しました: OS XでPythonのデフォルトバージョンを3.xに設定する方法?

0
Ruxi Zhang