Błąd Spark - nieobsługiwana Wersja pliku klasy

[2]} próbuję zainstalować Sparka na moim Macu. Użyłem home-brew do zainstalowania spark 2.4.0 i Scala. Zainstalowałem PySpark w moim środowisku anaconda i używam PyCharm do rozwoju. Wyeksportowałem do mojego profilu Basha:

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
Jednak nie jestem w stanie go uruchomić.

Podejrzewam, że jest to spowodowane wersją Javy z odczytu traceback. Byłbym naprawdę wdzięczny za pomoc w rozwiązaniu problemu. Proszę o komentarz, jeśli są jakieś informacje, które mogę podać, że jest pomocny poza tropem.

Otrzymuję następujący błąd:

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
Author: Mehdi LAMRANI, 2018-12-02

11 answers

Edit Spark 3.0 obsługuje Javę 11, więc musisz uaktualnić

Spark działa na Javie 8/11, Scali 2.12, Pythonie 2.7+/3.4+ i R 3.1+. Java 8 przed wersją 8u92 wsparcie jest przestarzałe od Spark 3.0.0


Oryginalna odpowiedź

Dopóki Spark nie obsługuje Javy 11 lub wyższej (co miejmy nadzieję zostanie wspomniane w najnowszej dokumentacji, gdy jest), musisz dodać flagę, aby ustawić swoją wersję Javy Na Java 8.

Od Spark 2.4.x

Spark działa na Java 8 , Python 2.7+/3.4+ i R 3.1+. W przypadku API Scala Spark 2.4.4 używa Scala 2.12. Będziesz musiał użyć kompatybilnej wersji Scala (2.12.x)

Na Mac / Unix, zobacz asdf-java aby zainstalować różne Javy

Na Macu, jestem w stanie to zrobić w moim .bashrc,

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

W Windows, checkout Chocolately, ale poważnie wystarczy użyć WSL2 lub Docker uruchomić Spark.


Możesz również ustawić to w spark-env.sh zamiast ustawiać zmienną dla całego profilu.

I oczywiście to wszystko oznacza, że będziesz musiał zainstalować Java 8 oprócz Twojego istniejącego Java 11

 93
Author: OneCricketeer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-16 14:49:28

Napotkałem ten problem podczas uruchamiania notebooka Jupyter i Spark przy użyciu Java 11. Zainstalowałem i skonfigurowałem dla Java 8, wykonując następujące czynności.

Install Java 8:

$ sudo apt install openjdk-8-jdk

Ponieważ miałem już zainstalowaną Javę 11, ustawiłem domyślną Javę na wersję 8 używając:

$ sudo update-alternatives --config java

Wybierz Java 8, a następnie potwierdź zmiany:

$ java -version

Wyjście powinno być podobne do:

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)

Jestem w stanie uruchomić Spark z powodzeniem w notebooku Jupyter. Powyższe kroki opierały się na poniższy przewodnik: https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-on-ubuntu-18-04

 89
Author: Andre Oporto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-11 14:28:27

Stwierdziłem, że dodanie lokalizacji spark przez findspark i java8 z os na początku skryptu najprostsze rozwiązanie:

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) 
 19
Author: Ferran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-01 09:58:34

Problem polega na tym, że PySpark wymaga Javy 8 dla niektórych funkcji. Spark 2.2.1 miał problemy z Javą 9 i nowszymi. Zalecanym rozwiązaniem była instalacja Javy 8.

Możesz zainstalować java-8, ustawić ją jako domyślną Javę i spróbować ponownie.

Aby zainstalować Javę 8,

sudo apt install openjdk-8-jdk

Aby zmienić domyślną wersję java, wykonaj to . możesz użyć polecenia

 update-java-alternatives --list

Aby wymienić wszystkie dostępne wersje Javy.

Set a domyślne przez uruchomienie polecenia:

sudo update-alternatives --config java

Aby wybrać żądaną wersję Javy. podaj dokładny numer na podanej liście. następnie utwórz swoją wersję Javy java -version i powinna zostać zaktualizowana. Ustaw także zmienną JAVA_HOME.

Aby ustawić JAVA_HOME, musisz znaleźć konkretną wersję i folder Java. Fallow this więc dyskusja dla uzyskania pełnego pomysłu na ustawienie zmiennej domowej java. ponieważ zamierzamy używać Javy 8, nasza ścieżka do folderów to /usr/lib/jvm/java-8-openjdk-amd64/. wystarczy przejść do folderu /usr/lib/jvm i creak jakie są dostępne foldery. użyj ls -l, aby zobaczyć foldery i ich softlinki, ponieważ te foldery mogą być skrótem dla niektórych wersji Javy. następnie przejdź do katalogu domowego cd ~ i edytuj plik bashrc

cd ~
gedit .bashrc

Następnie dodaj linie poniżej do pliku, Zapisz i zakończ.

## SETTING JAVA HOME
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
Następnie, aby uzyskać efekt tego, co zrobiłeś, wpisz source ~/.bashrc i uruchom w terminalu
 7
Author: Rajitha Fernando,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-23 08:27:34

W systemie windows (Windows 10) możesz rozwiązać problem, instalując jdk-8u201-windows-x64.exe i resetowanie systemowej zmiennej środowiskowej do poprawnej wersji JAVA JDK:

JAVA_HOME -> C:\Program Files\Java\jdk1.8. 0_201.

Nie zapomnij ponownie uruchomić terminala, w przeciwnym razie Resetowanie zmiennej środowiskowej nie zadziała.

 4
Author: tomasvanoyen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-15 08:05:31

Dla użytkowników Debiana 10 'buster' Java 8 JRE jest dostępna w pakiecie nvidia-openjdk-8-jre.

Zainstaluj go za pomocą

sudo apt install nvidia-openjdk-8-jre

Następnie ustaw JAVA_HOME podczas uruchamiania pyspark, np.:

JAVA_HOME=/usr/lib/jvm/nvidia-java-8-openjdk-amd64/ pyspark
 2
Author: SergiyKolesnikov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-11-06 22:55:51

Chciałem tylko dodać moje dwa grosze tutaj, ponieważ pozwoli to zaoszczędzić kilka godzin czasu dla osób, które używają PyCharm (zwłaszcza konfiguracji run). Po zmianie .bashrc LUB .bash_profile, aby wskazywać na Java 8 poprzez modyfikację zmiennych JAVA_HOME i PATH env (tak jak większość osób tutaj zaleca), zauważysz, że gdy uruchomisz Spark przy użyciu konfiguracji run PyCharm, nadal nie wychwyci ona właściwej Javy. Wygląda na to, że jest jakiś problem z PyCharm (używam PyCharm Professional 2020.2 in Mac Catalina). Dodatkowo, gdy uruchamiasz go za pomocą terminala PyCharm, działa dobrze. To potwierdza, że coś jest nie tak z PyCharm. Aby uruchomić konfigurację PyCharm, aby podnieść nową Javę, musiałem specjalnie dodać zmienną środowiskową JAVA_HOME w konfiguracji run, jak pokazano poniżej- Tutaj wpisz opis obrazka

I zadziałało!

Inną opcją, która również działa, jest sprawdzenie Include system environment variables option w oknie Environment Variables w konfiguracji Uruchom (zobacz zrzut ekranu powyżej) i ponowne uruchomienie PyCharm

 2
Author: Heapify,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-08 23:02:37

Mam ten sam problem w windows i dodałem JAVA_HOME do ścieżki zmiennej środowiskowej:

JAVA_HOME: C:\Program Files\Java\jdk-11.0.1

 0
Author: Chaymae Ahmed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-12-26 17:38:27

Hi aby mieć pewność, że ustawiasz właściwą ścieżkę SPARK_HOME, możesz użyć tego skryptu Pythona, aby ją zlokalizować: 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

Na moim Macu, na terminalu:

vim ~/.bashrc

I dodaj ścieżkę:

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

I wreszcie zastosować zmianę

source ~/.bashrc
 0
Author: ak6o,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-28 15:37:34

Na macOS: zainstaluj Java8 na swoim laptopie, używając następujących poleceń:

brew tap AdoptOpenJDK/openjdk
brew cask install adoptopenjdk8
 0
Author: ijoseph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-16 00:21:11

Ten problem występuje z powodu wersji Javy ustawionej w zmiennej środowiskowej JAVA_HOME.

Stara ścieżka Javy: / usr / lib / jvm / java-1.11.0-openjdk-amd64

Rozwiązanie: Ustaw JAVA_HOME na / usr / lib / jvm / java-8-openjdk-amd64

To zadziała!!!

Uwaga mój błąd to:

Plik "/home/tms/myInstallDir/spark-2.4.5-bin-hadoop2.7/python/pyspark/rdd.py", linia 816, w zbiorze sock_info = self.ctx._jvm.PythonRDD.collectAndServe (self._jrddrdd()) Plik "/home/tms/myInstallDir/spark-2.4.5-bin-hadoop2.7/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", linia 1257, in call Plik "/home/tms/myInstallDir/spark-2.4.5-bin-hadoop2.7/python/pyspark/sql/utils.py", linia 79, w deco raise IllegalArgumentException (s. split(': ', 1)[1], stackTrace) pyspark.sql.utils.IllegalArgumentException: u 'unsupported class file major version 55'

 -1
Author: Tanaji Sutar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-02 08:10:09