2016-08-13 2 views
0

私はAmazon EC2を使用しています。私は一人の労働者のために別のインスタンスを持っています。スパークの例外:作業者のPythonは、ドライバ3.5とは異なるバージョン3.4を持っています。

私はこの新しいですが、私はスタンドアロンモードでスパーク作業を行うことができました。今私はクラスターをしようとしています。マスターとワーカーはアクティブです(私はそれらのWebUIを見ることができ、彼らは機能しています)。

私はSpark 2.0を持っており、Python 3.5.2に付属している最新のAnaconda 4.1.1をインストールしました。私はpysparkに行って、os.version_infoを実行すると、3.5.2を取得します。私はまた、(stackoverflowとgoogleの他の記事に見られるように)正しくすべての環境変数を設定しました(PYSPARK_PYTHONなど) 。

とにかくどこでもpythonの3.4バージョンはありません。だから私はこれをどのように修正できるのだろうかと思っています。

私は、このコマンドを実行して、エラーが表示されます。

rdd = sc.parallelize([1,2,3]) 
rdd.count()  

エラーカウント()メソッドのために発生します。

16/08/13 18:44:31 ERROR Executor: Exception in task 1.0 in stage 2.0 (TID 17) 
org.apache.spark.api.python.PythonException: Traceback (most recent call last): 
    File "/opt/spark/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 3.4 than that in driver 3.5, PySpark cannot run with different minor versions 

at org.apache.spark.api.python.PythonRunner$$anon$1.read(PythonRDD.scala:193) 
at org.apache.spark.api.python.PythonRunner$$anon$1.<init>(PythonRDD.scala:234) 
at org.apache.spark.api.python.PythonRunner.compute(PythonRDD.scala:152) 
at org.apache.spark.api.python.PythonRDD.compute(PythonRDD.scala:63) 
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:319) 
at org.apache.spark.rdd.RDD.iterator(RDD.scala:283) 
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:70) 
at org.apache.spark.scheduler.Task.run(Task.scala:85) 
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:274) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
16/08/13 18:44:31 ERROR Executor: Exception in task 1.1 in stage 2.0 (TID 18) 
org.apache.spark.api.python.PythonException: Traceback (most recent call last): 
    File "/opt/spark/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 3.4 than that in driver 3.5, PySpark cannot run with different minor versions 
at org.apache.spark.api.python.PythonRunner$$anon$1.read(PythonRDD.scala:193) 
at org.apache.spark.api.python.PythonRunner$$anon$1.<init>(PythonRDD.scala:234) 
at org.apache.spark.api.python.PythonRunner.compute(PythonRDD.scala:152) 
at org.apache.spark.api.python.PythonRDD.compute(PythonRDD.scala:63) 
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:319) 
at org.apache.spark.rdd.RDD.iterator(RDD.scala:283) 
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:70) 
at org.apache.spark.scheduler.Task.run(Task.scala:85) 
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:274) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 

答えて

2

すでにアナコンダを使用しているので、あなたは、単に希望を持つ環境を作成することができますPythonバージョン:

conda create --name foo python=3.4 
source activate foo 

python --version 
## Python 3.4.5 :: Continuum Analytics, Inc 

export PYSPARK_DRIVER_PYTHON=/path/to/anaconda/envs/foo/bin/python 
+0

動作しませんでした。私はドライバとマスターの両方でこれを行いました。そして、私はsshウィンドウの各行の始めに(foo)を見ることができるので、それはやっていることをしています。しかし、エラーは依然として同じです。 – user1780424

+0

これは今何か別のことをして働いた。あなたの提案を使って、マスターとワーカーの両方でpython 3.5でfoo環境を作成しました。それは問題を解決しなかった。しかし、代わりに、私は3.4環境を作成しました(それはスレーブが3.4だと思われるので)、それはすべてうまくいきました。それで、それを3.5と認識させる方法がなければ、私はこの問題を解決します。 – user1780424

関連する問題