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
SparkがJava 11をサポートするまで(これは 最新のドキュメント で言及されることを期待します)、フラグを追加して設定する必要がありますJavaバージョンからJavaへ8。
Spark 2.4.x現在
SparkはJava 8、Python 2.7 +/3.4 +およびR 3.1+で実行されます。 Scala APIの場合、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をインストールする必要があります
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
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)
Windows(Windows 10)では、jdk-8u201-windows-x64.exeをインストールし、システム環境変数をJava JDKの正しいバージョンにリセットすることで問題を解決できます。
Java_HOME-> C:\ Program Files\Java\jdk1.8.0_201.
ターミナルを再起動することを忘れないでください。そうしないと、環境変数のリセットが開始されません。
Windowsでも同じ問題があり、Java_HOMEを環境変数パスに追加しました。
Java_HOME:C:\ Program Files\Java\jdk-11.0.1