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'
Ubuntu18.04 Spark 2.4.3
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