Я пытаюсь установить Spark на свой Mac. Я использовал самогон для установки Spark 2.4.0 и Scala. Я установил PySpark в свою среду anaconda и использую PyCharm для разработки. Я экспортировал в свой профиль 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
Однако я не могу заставить его работать.
Я подозреваю, что это связано с java-версией чтения трассировки. Я был бы очень признателен за помощь в устранении проблемы. Прокомментируйте, если я могу предоставить какую-либо информацию, которая будет полезна помимо отслеживания.
Я получаю следующую ошибку:
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
Добавлениеexport JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
и сохранение в текстовом редакторе.Ответы:
Edit Spark 3.0 поддерживает Java 11, поэтому вам необходимо обновить
Оригинальный ответ
Пока Spark не поддерживает Java 11 или выше (что, надеюсь, будет упомянуто в последней документации) когда это так), вам необходимо добавить флаг, чтобы установить версию Java на Java 8.
Начиная с Spark 2.4.x
На Mac / Unix см. Asdf-java для установки различных Jav.
На Mac я могу сделать это в моем
.bashrc
,export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
В Windows проверьте Chocolately, но серьезно, просто используйте WSL2 или Docker для запуска Spark.
Вы также можете установить это,
spark-env.sh
а не устанавливать переменную для всего вашего профиля.И, конечно же, все это означает, что вам необходимо установить Java 8 в дополнение к существующей Java 11.
источник
Я столкнулся с этой проблемой при запуске Jupyter Notebook и Spark с использованием Java 11. Я установил и настроил Java 8, выполнив следующие действия.
Установите Java 8:
$ sudo apt install openjdk-8-jdk
Поскольку я уже установил Java 11, я затем установил Java по умолчанию на версию 8, используя:
$ sudo update-alternatives --config java
Выберите Java 8 и затем подтвердите свои изменения:
$ java -version
Результат должен быть похож на:
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)
Теперь я могу успешно запустить Spark в Jupyter Notebook. Вышеуказанные шаги были основаны на следующем руководстве: https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-on-ubuntu-18-04
источник
sdk install java 8.0.212-zulu
устанавливает java 8 и спрашивает, хотите ли вы использовать установленную java 8 в качестве java по умолчаниюЯ обнаружил, что добавление местоположения искры через findspark и java8 с os в начале скрипта является самым простым решением:
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)
источник
Проблема в том, что PySpark требует Java 8 для некоторых функций. У Spark 2.2.1 были проблемы с Java 9 и более поздними версиями. Рекомендуемым решением была установка Java 8.
вы можете установить именно java-8, установить его в качестве java по умолчанию и повторить попытку.
установить java 8,
sudo apt install openjdk-8-jdk
чтобы изменить версию Java по умолчанию, выполните следующие действия . вы можете использовать команду
update-java-alternatives --list
для перечисления всех доступных версий java.
установите значение по умолчанию, выполнив команду:
sudo update-alternatives --config java
чтобы выбрать нужную версию Java. укажите точное число в предоставленном списке. затем измените свою версию java,
java -version
и она должна быть обновлена. Также установите переменную JAVA_HOME.чтобы установить JAVA_HOME, вы должны найти конкретную версию Java и папку. Следуйте этому обсуждению SO, чтобы получить полное представление о настройке переменной java home. поскольку мы собираемся использовать java 8, путь к нашей папке будет
/usr/lib/jvm/java-8-openjdk-amd64/
. просто зайдите в/usr/lib/jvm
папку и поскрипывайте, какие папки доступны. используйтеls -l
для просмотра папок и их программных ссылок, поскольку эти папки могут быть ярлыком для некоторых версий Java. затем перейдите в свой домашний каталогcd ~
и отредактируйте файл bashrccd ~ gedit .bashrc
затем добавьте в файл следующие строки, сохраните и выйдите.
## SETTING JAVA HOME export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=$PATH:$JAVA_HOME/bin
после этого, чтобы получить эффект от того, что вы сделали, введите
source ~/.bashrc
и запустите в терминалеисточник
В Windows (Windows 10) вы можете решить проблему, установив jdk-8u201-windows-x64.exe и сбросив системную переменную среды на правильную версию JAVA JDK:
JAVA_HOME -> C: \ Program Files \ Java \ jdk1.8.0_201.
Не забудьте перезапустить терминал, иначе сброс переменной окружения не сработает.
источник
Для пользователей Debian 10 «buster» в
nvidia-openjdk-8-jre
пакете доступна Java 8 JRE .Установите его с помощью
Затем установите
JAVA_HOME
при запускеpyspark
, например:источник
Просто хотел добавить сюда свои два цента, так как это сэкономит несколько часов времени людям, которые используют PyCharm (особенно конфигурацию запуска). После изменения
.bashrc
или.bash_profile
для указания на Java 8 путем изменения переменных JAVA_HOME и PATH env (как рекомендовано большинством людей), вы заметите, что когда вы запустите свой Spark, используя конфигурацию запуска PyCharm, он все равно не подберет правильный Ява. Похоже, что с PyCharm есть проблема (я использую PyCharm Professional 2020.2 в Mac Catalina). Кроме того, когда вы запускаете его с помощью терминала PyCharm, он работает нормально. Это подтверждает, что с PyCharm что-то не так. Чтобы конфигурация запуска PyCharm подбирала новый JAVA, мне пришлось специально добавить переменную среды JAVA_HOME в конфигурацию запуска, как показано ниже:и это сработало!
Другой вариант, который также работает, - это проверить
Include system environment variables option
вEnvironment Variables
окне в конфигурации запуска (см. Снимок экрана выше) и перезапустить PyCharm.источник
У меня такая же проблема в Windows, и я добавил JAVA_HOME в путь к переменной окружения:
источник
Привет, на самом деле, чтобы убедиться, что вы вводите правильный путь к SPARK_HOME, вы можете использовать этот скрипт python, чтобы найти его: 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
На моем Mac на терминале:
vim ~/.bashrc
и добавьте путь:
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
а затем, наконец, применить изменение
source ~/.bashrc
источник
В macOS: установите Java8 на свой ноутбук, используя следующие команды:
источник
Эта проблема возникает из-за версии Java, которую вы установили в переменной среды JAVA_HOME.
СТАРЫЙ путь JAVA: /usr/lib/jvm/java-1.11.0-openjdk-amd64
Решение: установите JAVA_HOME в / usr / lib / jvm / java-8-openjdk-amd64
Это сработает!!!
Обратите внимание, что моя ошибка была:
Файл "/home/tms/myInstallDir/spark-2.4.5-bin-hadoop2.7/python/pyspark/rdd.py", строка 816, в collect sock_info = self.ctx._jvm.PythonRDD.collectAndServe (self._jrdd .rdd ()) Файл "/home/tms/myInstallDir/spark-2.4.5-bin-hadoop2.7/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", строка 1257, в файле вызова "/home/tms/myInstallDir/spark-2.4.5-bin-hadoop2.7/python/pyspark/sql/utils.py", строка 79, в декомпрессивном режиме поднять исключение IllegalArgumentException (s.split (':', 1) [1], stackTrace) pyspark.sql.utils.IllegalArgumentException: u 'Неподдерживаемая основная версия файла класса 55'
источник