Es wurde ein Fehler behoben, der beim Versuch auftrat, Spark in einer Umgebung zu verwenden, in der Java 8 und Java 11 gleichzeitig vorhanden sind

Es wurde ein Fehler behoben, der beim Versuch auftrat, Spark in einer Umgebung zu verwenden, in der Java 8 und Java 11 gleichzeitig vorhanden sind

Überblick

Wenn ich Funken von Spark-Shell verwendet oder Pyspark ausgeführt habe, habe ich den gleichen Fehler wie unten erhalten, also habe ich ihn behoben.

'Unsupported class file major version 55'

Umgebung

Ubuntu18.04 Spark 2.4.3

Lösung (mit Versuch und Irrtum)

Die Ursache scheint Java 11 zu sein. Überprüfen Sie die von Ihnen verwendete Java-Version und gehen Sie wie folgt vor, um eine andere Version auszuwählen:

$ sudo update-alternatives --config java
alternative java (/usr/bin/Stellen Sie Java bereit)Hat drei Möglichkeiten.

Prioritätsstatus des Auswahlpfads
------------------------------------------------------------
  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/Java 1101 Automatikmodus
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/Java 1101 manueller Modus
* 2            /usr/lib/jvm/java-11-oracle/bin/Java 1091 manueller Modus
  3            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/Java 1081 manueller Modus


Aktuelle Auswahl[*]Halten<Enter>, Andernfalls drücken Sie die Taste der Auswahlnummer:3

Ich habe mich gefragt, ob ich Java 8 damit verwenden könnte, aber es ist nicht wie unten gezeigt passiert.

$ java --version
openjdk 11.0.2 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

Lassen Sie uns herausfinden, wo wir zuerst sehen werden. Dann

$ which java
/home/ksn/.sdkman/candidates/java/current/bin/java

Es gibt Hinweise darauf, dass Java (und Kotlin) mit SDKMAN installiert wurden.

Zu diesem Zeitpunkt habe ich gelernt, dass SDKMAN Funken installieren kann, also habe ich beschlossen, es zu versuchen.

$ sdk install spark

Ich habe es mit installiert und versucht, den Vorgang von "$ spark-session" aus zu überprüfen, aber ich erhalte immer noch den gleichen Fehler wie "Nicht unterstützte Klassendatei Hauptversion 55".

$ sdk list java

Als ich mir ansah, ob Java 8 mit SDKMAN installiert werden kann, stellte sich heraus, dass Java 8 oder weniger nicht installiert werden konnte. In diesem Fall entschied ich, dass es unmöglich war, es hier zu lösen.

Deinstallieren Sie daher Java, das unten in SDKMAN eingefügt wurde.

$ sdk uninstall java 11.0.2-open

mit diesem,

$ java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-0ubuntu1.18.04.1-b03)
OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode)

$ which java
/usr/bin/java

Dann liest es Java unter / usr / bin /.

Versuchen Sie, den mit SDKMAN installierten Funken als "$ spark-shell" zu starten. Dann

$ spark-shell
...
scala> val textFile = spark.read.text("README.md")
textFile: org.apache.spark.sql.DataFrame = [value: string]

scala> textFile.count()
res0: Long = 109

Und der Fehler verschwand sicher.

Soweit ich das beurteilen kann, ist es zu früh, Java 11 mit Spark und Hadoop zu verwenden. Wenn Sie Java 11 verwenden möchten, erwarten Sie Spark 3.x. Dies scheint das [Problem bei der Einführung von Hadoop neulich] zu lösen (https://qiita.com/ksnt/items/b204d3fa30fb3cb86a06#fn1).

Recommended Posts

Es wurde ein Fehler behoben, der beim Versuch auftrat, Spark in einer Umgebung zu verwenden, in der Java 8 und Java 11 gleichzeitig vorhanden sind
Zusammenfassung beim Versuch, Solr in Java zu verwenden und eine Fehlermeldung zu erhalten (Solr 6.x)
Lösung, die beim Versuch, mit Java eine Verbindung zu DB (MySQL) herzustellen, einen Fehler verursacht
407 Fehler beim Versuch, über einen authentifizierten Proxy in Java auf die HTTPS-Site zuzugreifen
Was ist in "Java 8 bis Java 11" passiert und wie wird eine Umgebung erstellt?
Eine peinliche Geschichte, die am selben Tag behandelt wurde, als versucht wurde, die Daten 3/31 und 4/1 zu vergleichen [Java / Kalender]
[Docker] Eine Geschichte über einen Fehler beim Erstellen von Docker
So ändern Sie die Java-Version und führen sie in einer Umgebung aus, in der Java nicht frei installiert werden kann
[jOOQ] Wie in der WHERE / AND / OR-Klausel WANN FALLEN
So beheben Sie den unbekannten Fehler, der bei der Verwendung von slf4j in Java aufgetreten ist
[Programmieranfänger] Was tun, wenn Schienen zu einem Fehler in der lokalen Entwicklungsumgebung werden?
Ich möchte bei der Registrierung in der Datenbank eine Fehlermeldung anzeigen
Im kostenlosen Kurs von RubyOnRails Udemy ist ein Fehler aufgetreten, der behoben und bis zum Ende durchgearbeitet wurde
[Fehlerbehebung] Tritt auf, wenn versucht wird, mit Docker eine Umgebung für den Frühling zu erstellen
Beim Ausführen einer Funktion in PostgreSQL mit dem Parameter OUT von MyBatis auf CURSOR ist ein Fehler aufgetreten.
Bei Verwendung einer Liste in Java wird java.awt.List ausgegeben und ein Fehler tritt auf
Eine Lösung für einen Fehler, der Sie verärgert, dass Sie in einer Produktionsumgebung nicht der MySQL-Standardeinstellung ONLY_FULL_GROUP_BY folgen und diese nicht eindeutig ist.
Fehlerprotokolle und Ausnahmebehandlung, die häufig im Java-Bereich angezeigt werden
Verwendung von git mit der Leistung von jgit in einer Umgebung ohne git-Befehle
Beim Versuch, sbt zu installieren, um eine Scala-Entwicklungsumgebung zu erstellen, ist ein Fehler aufgetreten
Zusammenfassung der Verwendung des im IE festgelegten Proxy-Sets bei der Verbindung mit Java
Überprüfungswertfehler, der in der Clusterumgebung aufgetreten ist
In der Abbildung verstandene Java-Klassen und -Instanzen
Was tun, wenn ein Fehler in Rails auftritt? DB: migrate ((StandardError: Ein Fehler ist aufgetreten, diese und alle späteren Migrationen wurden abgebrochen :))
Eine Geschichte, die das Problem löste, dass die Java (jdk) -Version zu hoch war, um die H2O-Bibliothek in R und R Studio zu verwenden.
Was tun, wenn ein Fehler auftritt (StandardError: Ein Fehler ist aufgetreten, diese und alle späteren Migrationen wurden abgebrochen :) in Rails db: migrate
Ein Programm (Java), das die Summe von ungeraden und geraden Zahlen in einem Array ausgibt
Informationen zu dem Fehler, der beim Hinzufügen eines Spaltennamens in Rails aufgetreten ist (Rails DB: Migrieren, Rails DB: Rollback, Hinzufügen).
Verwenden Sie JLine, wenn Sie Tastenanschläge auf der Konsole zeichenweise in Java verarbeiten möchten
Beheben Sie den CreateProcess-Fehler = 206, wenn Sie Java in einer Windows-Umgebung ausführen
Verwenden Sie Java Web Start in einer OpenJDK-Umgebung unter Windows
Aufrufen und Verwenden der API in Java (Spring Boot)
Gründe, Servlet und JSP in der Java-Entwicklung getrennt zu verwenden
[Java] Verwenden Sie ResolverStyle.LENIENT, um Datum und Uhrzeit gut zu handhaben
[Rails] Was tun, wenn der Fehler Keine Datenbank ausgewählt und Unbekannte Datenbank in db: migrate angezeigt wird?
Organisieren Sie die Kommunikation in einer Umgebung, in der verschiedene Ressourcen auf dem Hostcomputer und dem Docker-Container verwendet werden
Wirf eine Ausnahme und fange, wenn es keinen Handler gibt, der dem Pfad im Frühjahr entspricht
[Java] Das Hinzufügen eines Elements zur Sammlung führt zu einem Kompilierungsfehler
Beim Versuch, PowerMock mit JUnit zu verwenden, wurde ein IllegalAccessError angezeigt
So geben Sie den Wert aus, wenn sich ein Array im Array befindet
Ich habe versucht, die Fehlermeldung beim Ausführen von Eclipse (Java) zu übersetzen.
Nach dem Wechsel zwischen Java 8 und 11 tritt bei der Bestätigung ein Fehler auf
[Java] Flache Kopie und tiefe Kopie beim Konvertieren eines Arrays in eine Liste
Wie installiere ich die in Ubuntu verwendete Sprache und wie erstelle ich die Umgebung?
Der Operator, der geboren wurde, um geboren zu werden, instanceof (Java) ~ So verwenden Sie den instanceof-Operator ~
So ermitteln Sie die Länge einer Audiodatei mit Java
Es sollte mit dem Beispiel identisch sein, wenn Sie sich bei Twitter anmelden, es tritt jedoch ein Fehler auf, bis die Lösung behoben ist
[WSL] Lösung für das Phänomen, dass 404 angezeigt wird, wenn versucht wird, Java mit apt einzufügen (persönliches Memo)
[Java] Geben Sie das Ergebnis von ffprobe -show_streams in JSON aus und ordnen Sie es einem Objekt in Jackson zu
Wie verwende ich Klassen in Java?
Aktualisieren Sie JAVA auf die neueste Version auf 1.8.0_144 (beim Herunterladen aus dem Internet und Aktualisieren)
So testen Sie eine private Methode und verspotten sie teilweise in Java
Ich habe die Punkte zusammengefasst, die bei der kombinierten Verwendung von Ressourcen und Ressourcen zu beachten sind