1. ホーム
  2. java

[解決済み] Spark Error - サポートされていないクラスファイルのメジャーバージョン

2022-01-31 20:19:16

質問

MacにSparkをインストールしようとしています。私は、spark 2.4.0とScalaをインストールするためにhome-brewを使用しました。私は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

解決方法は?

編集 Spark 3.0はJava 11をサポートしているので、アップグレードする必要があります。

<ブロッククオート

Spark は Java 8/11、Scala 2.12、Python 2.7+/3.4+、R 3.1+ で実行されます。バージョン8u92以前のJava 8のサポートは、Spark 3.0.0から非推奨となりました。



オリジナル回答

Spark が Java 11 以降をサポートするまで(できれば、次のページで言及されることを期待します)。 最新のドキュメント の場合)、JavaのバージョンをJava 8に設定するフラグを追加する必要があります。

Spark 2.4.x時点

スパークが動作する環境 ジャバ8 Python 2.7+/3.4+ および R 3.1+ です。Scala APIについては、Spark 2.4.4はScala 2.12を使用しています。互換性のあるScalaバージョン(2.12.x)を使用する必要があります。

Mac/Unix の場合は asdf-java 異なるJavasをインストールする場合

Macの場合は、自分の .bashrc ,

export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

Windowsでは、Chocolatelyをチェックアウトして、WSL2またはDockerを使用してSparkを実行します。


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

そして、もちろん、これはすべて、Java 8をインストールする必要があることを意味します。 に加えて 既存のJava 11