Próbuję zainstalować Sparka na moim Macu. Użyłem domowego naparu do zainstalowania Spark 2.4.0 i Scali. Zainstalowałem PySpark w moim środowisku anaconda i używam PyCharm do programowania. Wyeksportowałem do mojego profilu 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
Jednak nie mogę zmusić go do pracy.
Podejrzewam, że jest to spowodowane wersją java z odczytu śledzenia. Naprawdę byłbym wdzięczny za pomoc w rozwiązaniu problemu. Proszę o komentarz, jeśli są jakieś informacje, które mogę podać, które są pomocne poza śledzeniem wstecznym.
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
touch ~/.bash_profile; open ~/.bash_profile
Dodawanieexport JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
i zapisywanie w edycji tekstu.Odpowiedzi:
Edycja Spark 3.0 obsługuje Javę 11, więc musisz uaktualnić
Oryginalna odpowiedź
Dopóki Spark nie będzie obsługiwał języka Java 11 lub nowszego (o czym miejmy nadzieję, że zostanie wspomniane w najnowszej dokumentacji, gdy jest), musisz dodać flagę, aby ustawić wersję Java na Java 8.
Od Spark 2.4.x
Na Mac / Unix, zobacz asdf-java, aby zainstalować różne Javas
Na komputerze Mac mogę to zrobić w moim
.bashrc
,export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
W systemie Windows kup Chocolately, ale poważnie, po prostu użyj WSL2 lub Dockera, aby uruchomić Spark.
Możesz również ustawić tę
spark-env.sh
opcję zamiast ustawiać zmienną dla całego profilu.I oczywiście to wszystko oznacza, że oprócz istniejącej Javy 11 musisz zainstalować Javę 8
źródło
Napotkałem ten problem podczas uruchamiania Jupyter Notebook i Spark przy użyciu Java 11. Zainstalowałem i skonfigurowałem dla Java 8, wykonując następujące kroki.
Zainstaluj Javę 8:
$ sudo apt install openjdk-8-jdk
Ponieważ już zainstalowałem Javę 11, ustawiłem domyślną Javę na wersję 8 za pomocą:
$ sudo update-alternatives --config java
Wybierz Java 8, a następnie potwierdź zmiany:
$ java -version
Wynik powinien być podobny 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)
Teraz mogę pomyślnie uruchomić Spark w Jupyter Notebook. Powyższe kroki zostały oparte na następującym przewodniku: https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-on-ubuntu-18-04
źródło
sdk install java 8.0.212-zulu
instaluje java 8 i pyta, czy chcesz używać zainstalowanej javy 8 jako domyślnej javaOkazało się, że dodanie lokalizacji zapłonowej poprzez findspark i java8 z OS na początku skryptu najprostszym rozwiązaniem:
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)
źródło
Problem jest taki, że PySpark wymaga Java 8 dla niektórych funkcji. Spark 2.2.1 miał problemy z Javą 9 i nowszymi wersjami. Zalecanym rozwiązaniem była instalacja Java 8.
możesz specjalnie zainstalować java-8 i ustawić ją jako domyślną java i spróbować ponownie.
zainstalować java 8,
sudo apt install openjdk-8-jdk
aby zmienić domyślną wersję java, postępuj zgodnie z tym . możesz użyć polecenia
update-java-alternatives --list
za wyświetlenie wszystkich dostępnych wersji Java.
ustaw domyślny, uruchamiając polecenie:
sudo update-alternatives --config java
aby wybrać żądaną wersję java. podaj dokładną liczbę na podanej liście. następnie sprawdź swoją wersję java
java -version
i powinna zostać zaktualizowana. Ustaw również zmienną JAVA_HOME.aby ustawić JAVA_HOME, musisz znaleźć określoną wersję Java i folder. Wykonaj tę dyskusję SO, aby uzyskać pełny pomysł na ustawienie zmiennej domowej Java. ponieważ będziemy używać java 8, nasza ścieżka do folderu to
/usr/lib/jvm/java-8-openjdk-amd64/
. po prostu przejdź do/usr/lib/jvm
folderu i skrzyp, jakie są dostępne foldery. użyj,ls -l
aby wyświetlić foldery i ich miękkie łącza, ponieważ te foldery mogą być skrótami dla niektórych wersji Java. następnie przejdź do katalogu domowegocd ~
i edytuj plik bashrccd ~ gedit .bashrc
następnie Dodaj poniższe linie 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źródło
W systemie Windows (Windows 10) problem można rozwiązać, instalując jdk-8u201-windows-x64.exe i resetując systemową zmienną środowiskową do poprawnej wersji JAVA JDK:
JAVA_HOME -> C: \ Program Files \ Java \ jdk1.8.0_201.
Nie zapomnij zrestartować terminala, w przeciwnym razie resetowanie zmiennej środowiskowej nie rozpocznie się.
źródło
Dla użytkowników Debiana 10 „buster” w
nvidia-openjdk-8-jre
pakiecie dostępna jest Java 8 JRE .Zainstaluj go z
Następnie ustaw
JAVA_HOME
podczas biegupyspark
np:źródło
Chciałem tylko dodać tutaj moje dwa centy, ponieważ pozwoli to zaoszczędzić kilka godzin czasu dla osób, które używają PyCharm (szczególnie konfiguracja uruchamiania). Po zmianie
.bashrc
lub,.bash_profile
aby wskazać na Javę 8, modyfikując zmienne JAVA_HOME i PATH env (jak zalecała większość osób tutaj), zauważysz, że gdy uruchomisz Spark'a przy użyciu konfiguracji uruchamiania PyCharm, nadal nie wybierze właściwego Jawa. Wygląda na to, że wystąpił problem z PyCharm (używam PyCharm Professional 2020.2 na Mac Catalina). Dodatkowo, gdy uruchomisz go za pomocą terminala PyCharm, działa dobrze. To potwierdza, że coś jest nie tak z PyCharm. Aby konfiguracja uruchamiania PyCharm podniosła nową JAVA, musiałem specjalnie dodać zmienną środowiskową JAVA_HOME w konfiguracji uruchamiania, jak pokazano poniżej:i zadziałało!
Inną opcją, która również działa, jest sprawdzenie
Include system environment variables option
wEnvironment Variables
oknie w konfiguracji uruchamiania (patrz zrzut ekranu powyżej) i ponowne uruchomienie PyCharmźródło
Mam ten sam problem w oknach i dodałem JAVA_HOME do ścieżki zmiennej środowiskowej:
źródło
Cześć, aby mieć pewność, że wpisujesz właściwą SPARK_HOME ŚCIEŻKĘ, 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
a na koniec zastosować zmianę
source ~/.bashrc
źródło
W systemie macOS: zainstaluj Java8 na swoim laptopie za pomocą następujących poleceń:
źródło
Ten problem występuje z powodu wersji Java ustawionej w zmiennej środowiskowej JAVA_HOME.
STARA ścieżka JAVA: /usr/lib/jvm/java-1.11.0-openjdk-amd64
Rozwiązanie: ustaw JAVA_HOME na / usr / lib / jvm / java-8-openjdk-amd64
To będzie działać!!!
Zauważ, że mój błąd to:
Plik "/home/tms/myInstallDir/spark-2.4.5-bin-hadoop2.7/python/pyspark/rdd.py", wiersz 816, w collect sock_info = self.ctx._jvm.PythonRDD.collectAndServe (self._jrdd .rdd ()) Plik "/home/tms/myInstallDir/spark-2.4.5-bin-hadoop2.7/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", wiersz 1257, w wywołaniu Plik "/home/tms/myInstallDir/spark-2.4.5-bin-hadoop2.7/python/pyspark/sql/utils.py", wiersz 79, w deco podnieś IllegalArgumentException (s.split (':', 1) [1], stackTrace) pyspark.sql.utils.IllegalArgumentException: u'Unsupported class file major version 55 '
źródło