Ich versuche, Spark auf meinem Mac zu installieren. Ich habe Home Brew verwendet, um Spark 2.4.0 und Scala zu installieren. Ich habe PySpark in meiner Anaconda-Umgebung installiert und verwende PyCharm für die Entwicklung. Ich habe in mein Bash-Profil exportiert:
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
Ich kann es jedoch nicht zum Laufen bringen.
Ich vermute, dass dies auf die Java-Version beim Lesen des Tracebacks zurückzuführen ist. Ich würde mich sehr über Hilfe freuen, um das Problem zu beheben. Bitte kommentieren Sie, ob ich Informationen bereitstellen kann, die über den Traceback hinaus hilfreich sind.
Ich erhalte die folgende Fehlermeldung:
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
touch ~/.bash_profile; open ~/.bash_profile
Hinzufügenexport JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
und Speichern innerhalb der Textbearbeitung.Antworten:
Edit Spark 3.0 unterstützt Java 11, daher müssen Sie ein Upgrade durchführen
Ursprüngliche Antwort
Bis Spark Java 11 oder höher unterstützt (was hoffentlich in der neuesten Dokumentation erwähnt wird, wenn dies der Fall ist), müssen Sie ein Flag hinzufügen, um Ihre Java-Version auf Java 8 zu setzen.
Ab Spark 2.4.x.
Unter Mac / Unix finden Sie unter asdf-java Informationen zur Installation verschiedener Javas
Auf einem Mac kann ich dies in meinem
.bashrc
,export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
Unter Windows können Sie Chocolately auschecken, aber verwenden Sie ernsthaft nur WSL2 oder Docker, um Spark auszuführen.
Sie können dies auch festlegen,
spark-env.sh
anstatt die Variable für Ihr gesamtes Profil festzulegen.Und das alles bedeutet natürlich, dass Sie Java 8 zusätzlich zu Ihrem vorhandenen Java 11 installieren müssen
quelle
Ich bin auf dieses Problem gestoßen, als ich Jupyter Notebook und Spark mit Java 11 ausgeführt habe. Ich habe Java 8 mithilfe der folgenden Schritte installiert und konfiguriert.
Installieren Sie Java 8:
$ sudo apt install openjdk-8-jdk
Da ich Java 11 bereits installiert hatte, setzte ich mein Standard-Java auf Version 8 mit:
$ sudo update-alternatives --config java
Wählen Sie Java 8 und bestätigen Sie Ihre Änderungen:
Die Ausgabe sollte ähnlich sein wie:
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)
Ich kann Spark jetzt erfolgreich in Jupyter Notebook ausführen. Die obigen Schritte basierten auf dem folgenden Handbuch: https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-on-ubuntu-18-04
quelle
sdk install java 8.0.212-zulu
installiert Java 8 und fragt, ob Sie das installierte Java 8 als Standard-Java verwenden möchtenIch fand , dass die Zugabe von Funkenort durch findspark und java8 mit o am Anfang des Skripts der einfachste Lösung:
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)
quelle
Das Problem ist, dass PySpark für einige Funktionen Java 8 benötigt. Spark 2.2.1 hatte Probleme mit Java 9 und höher. Die empfohlene Lösung war die Installation von Java 8.
Sie können Java-8 speziell installieren, es als Standard-Java festlegen und es erneut versuchen.
um Java 8 zu installieren,
sudo apt install openjdk-8-jdk
Befolgen Sie diese Anweisungen, um die Standard-Java-Version zu ändern . Sie können den Befehl verwenden
update-java-alternatives --list
zum Auflisten aller verfügbaren Java-Versionen.
Legen Sie einen Standard fest, indem Sie den folgenden Befehl ausführen:
sudo update-alternatives --config java
um die gewünschte Java-Version auszuwählen. Geben Sie die genaue Nummer in der bereitgestellten Liste an. Dann cheak deine Java-Version
java -version
und es sollte aktualisiert werden. Legen Sie auch die Variable JAVA_HOME fest.Um JAVA_HOME festzulegen, müssen Sie die spezifische Java-Version und den Ordner finden. Sehen Sie sich diese SO-Diskussion an, um eine vollständige Vorstellung vom Festlegen der Java-Home-Variablen zu erhalten. Da wir Java 8 verwenden werden, lautet unser Ordnerpfad
/usr/lib/jvm/java-8-openjdk-amd64/
. Gehen Sie einfach in den/usr/lib/jvm
Ordner und knarren Sie, welche Ordner verfügbar sind. Verwenden Siels -l
diese Option, um Ordner und ihre Softlinks anzuzeigen, da diese Ordner für einige Java-Versionen eine Verknüpfung sein können. Gehen Sie dann in Ihr Home-Verzeichniscd ~
und bearbeiten Sie die bashrc-Dateicd ~ gedit .bashrc
Fügen Sie dann der Datei folgende Zeilen hinzu, speichern Sie sie und beenden Sie sie.
## SETTING JAVA HOME export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=$PATH:$JAVA_HOME/bin
Geben Sie danach das
source ~/.bashrc
Terminal ein und führen Sie es aus, um die Wirkung zu erzielenquelle
Unter Windows (Windows 10) können Sie das Problem beheben, indem Sie jdk-8u201-windows-x64.exe installieren und die Systemumgebungsvariable auf die richtige Version des JAVA JDK zurücksetzen:
JAVA_HOME -> C: \ Programme \ Java \ jdk1.8.0_201.
Vergessen Sie nicht, das Terminal neu zu starten, da sonst das Zurücksetzen der Umgebungsvariablen nicht einsetzt.
quelle
Für Debian 10 'Buster'-Benutzer ist Java 8 JRE im
nvidia-openjdk-8-jre
Paket verfügbar .Installieren Sie es mit
Dann
JAVA_HOME
beim Laufen einstellenpyspark
, zB:quelle
Ich habe das gleiche Problem in Windows und habe JAVA_HOME zum Pfad der Umgebungsvariablen hinzugefügt:
quelle
Hallo, um sicherzugehen, dass Sie den richtigen SPARK_HOME-Pfad angeben, können Sie ihn mit diesem Python-Skript suchen: https://github.com/apache/spark/blob/master/python/pyspark/find_spark_home.py
python3 find_spark_home.py /usr/local/lib/python3.7/site-packages/pyspark
Auf meinem Mac auf dem Terminal:
und fügen Sie den Pfad hinzu:
export JAVA_HOME=/Library/java/JavaVirtualMachines/adoptopenjdk-8.jdk/contents/Home/ export SPARK_HOME=/usr/local/lib/python3.7/site-packages/pyspark export PYSPARK_PYTHON=/usr/local/bin/python3
und dann endlich die Änderung anzuwenden
source ~/.bashrc
quelle
Unter macOS: Installieren Sie Java8 mit den folgenden Befehlen auf Ihrem Laptop:
quelle
Dieses Problem tritt aufgrund der Java-Version auf, die Sie für die Umgebungsvariable JAVA_HOME festgelegt haben.
ALTER JAVA-Pfad: /usr/lib/jvm/java-1.11.0-openjdk-amd64
Lösung: Setzen Sie JAVA_HOME auf / usr / lib / jvm / java-8-openjdk-amd64
Es wird klappen!!!
Beachten Sie, dass mein Fehler war:
Datei "/home/tms/myInstallDir/spark-2.4.5-bin-hadoop2.7/python/pyspark/rdd.py", Zeile 816, in collect sock_info = self.ctx._jvm.PythonRDD.collectAndServe (self._jrdd .rdd ()) Datei "/home/tms/myInstallDir/spark-2.4.5-bin-hadoop2.7/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", Zeile 1257, in Call - File "/home/tms/myInstallDir/spark-2.4.5-bin-hadoop2.7/python/pyspark/sql/utils.py", Linie 79, in Deco raise Illegal (s.split ( ':', 1) [1], stackTrace) pyspark.sql.utils.IllegalArgumentException: u'Unsupported class file major version 55 '
quelle