web-dev-qa-db-ja.com

Pysparkエラー-サポートされていないクラスファイルメジャーバージョン55

FIX:

この問題を修正するために、bash_profileを編集して、Java 1.8が次のようにグローバルデフォルトとして使用されるようにしました。

touch ~/.bash_profile; open ~/.bash_profile

追加中

export Java_HOME=$(/usr/libexec/Java_home -v 1.8) 

テキスト編集内で保存します。

UPDATE

Oracleからのライセンスの変更により、上記の修正が機能せず、brewを使用したインストールで問題が発生する場合があります。 Java 8をインストールするには、 this ガイドに従う必要がある場合があります。


質問:

MacにSparkをインストールしようとしています。 home-brewを使用してspark 2.4.0およびScalaをインストールしました。私はanaconda環境にPySparkをインストールし、開発にPyCharmを使用しています。 bashプロファイルにエクスポートしました:

export SPARK_VERSION=`ls /usr/local/Cellar/Apache-spark/ | sort | tail -1`
export SPARK_HOME="/usr/local/Cellar/Apache-spark/$SPARK_VERSION/libexec"
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.9-src.Zip:$PYTHONPATH

しかし、私はそれを動作させることができません。

これは、Javaバージョンがトレースバックを読み取っていないためと思われます。この問題を解決するための手助けをしていただければ幸いです。トレースバック以外にも役立つ情報を提供できる場合は、コメントしてください。

次のエラーが表示されます。

Traceback (most recent call last):
  File "<input>", line 4, in <module>
  File "/anaconda3/envs/coda/lib/python3.6/site-packages/pyspark/rdd.py", line 816, in collect
    sock_info = self.ctx._jvm.PythonRDD.collectAndServe(self._jrdd.rdd())
  File "/anaconda3/envs/coda/lib/python3.6/site-packages/py4j/Java_gateway.py", line 1257, in __call__
    answer, self.gateway_client, self.target_id, self.name)
  File "/anaconda3/envs/coda/lib/python3.6/site-packages/py4j/protocol.py", line 328, in get_return_value
    format(target_id, ".", name), value)
py4j.protocol.Py4JJavaError: An error occurred while calling z:org.Apache.spark.api.python.PythonRDD.collectAndServe.
: Java.lang.IllegalArgumentException: Unsupported class file major version 55
23
James

SparkがJava 11をサポートするまで(これは 最新のドキュメント で言及されることを期待します)、フラグを追加して設定する必要がありますJavaバージョンからJavaへ8。

Spark 2.4.x現在

SparkはJava 8、Python 2.7 +/3.4 +およびR 3.1+で実行されます。 Scala AP​​Iの場合、Spark 2.4.4はScala 2.12を使用します。互換性のあるScalaバージョン(2.12.x)を使用する必要があります

Macでは、.bashrcでこれを行うことができます。

export Java_HOME=$(/usr/libexec/Java_home -v 1.8)

プロファイル全体に変数を設定するのではなく、spark-env.shでこれを設定することもできます。

そして、既存のJava 11に加えてJava 8をインストールする必要があります

29
cricket_007

Spark 11を使用してJupyter NotebookとJavaを実行すると、この問題に遭遇しました。次の手順を使用してJava 8をインストールおよび構成しました。

Java 8をインストールします。

$ Sudo apt install openjdk-8-jdk

既にJava 11をインストールしていたので、次を使用してデフォルトのJavaをバージョン8に設定しました。

$ Sudo update-alternatives --config Java

Java 8を選択して、変更を確認します。

$ Java -version

出力は次のようになります。

openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.18.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

Jupyter NotebookでSparkを正常に実行できるようになりました。上記の手順は、次のガイドに基づいています。 https://www.digitalocean.com/community/tutorials/how-to-install-Java-with-apt-on-ubuntu-18-04

28
aoporto

Pycharmでは、スクリプトの先頭にspark locationからfindsparkおよびJava8 with osを追加することがわかりました。最も簡単な解決策:

import findspark
import os
spark_location='/opt/spark-2.4.3/' # Set your own
Java8_location= '/usr/lib/jvm/Java-8-openjdk-AMD64' # Set your own
os.environ['Java_HOME'] = Java8_location
findspark.init(spark_home=spark_location) 
4
Ferran

Windows(Windows 10)では、jdk-8u201-windows-x64.exeをインストールし、システム環境変数をJava JDKの正しいバージョンにリセットすることで問題を解決できます。

Java_HOME-> C:\ Program Files\Java\jdk1.8.0_201.

ターミナルを再起動することを忘れないでください。そうしないと、環境変数のリセットが開始されません。

1
tomasvanoyen

Windowsでも同じ問題があり、Java_HOMEを環境変数パスに追加しました。

Java_HOME:C:\ Program Files\Java\jdk-11.0.1

1
Chaymae Ahmed