Подтвердить что ты не робот

Pyspark: Исключение: процесс Java-шлюза вышел, прежде чем отправить драйверу его номер порта

Я пытаюсь запустить pyspark на моем macbook воздухе. Когда я пытаюсь запустить его, я получаю сообщение об ошибке:

Exception: Java gateway process exited before sending the driver its port number

когда sc = SparkContext() вызывается при запуске. Я попытался выполнить следующие команды:

./bin/pyspark
./bin/spark-shell
export PYSPARK_SUBMIT_ARGS="--master local[2] pyspark-shell"

безрезультатно. Я также посмотрел здесь:

Spark + Python - Процесс Java-шлюза завершился перед отправкой драйвера его номера порта?

но на этот вопрос никогда не было ответа. Пожалуйста помоги! Спасибо.

4b9b3361

Ответ 1

это поможет вам

Одно из решений добавляет pyspark-shell к переменной среды оболочки PYSPARK_SUBMIT_ARGS:

export PYSPARK_SUBMIT_ARGS="--master local[2] pyspark-shell"

Существует изменение в python/pyspark/java_gateway.py, которое требует, чтобы PYSPARK_SUBMIT_ARGS включал pyspark-shell, если переменная PYSPARK_SUBMIT_ARGS задана пользователем.

Ответ 2

Одна из возможных причин: JAVA_HOME не установлен, потому что java не установлен.

Я столкнулся с той же проблемой. В нем говорится:

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/spark/launcher/Main : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:296)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:406)
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/opt/spark/python/pyspark/conf.py", line 104, in __init__
    SparkContext._ensure_initialized()
  File "/opt/spark/python/pyspark/context.py", line 243, in _ensure_initialized
    SparkContext._gateway = gateway or launch_gateway()
  File "/opt/spark/python/pyspark/java_gateway.py", line 94, in launch_gateway
    raise Exception("Java gateway process exited before sending the driver its port number")
Exception: Java gateway process exited before sending the driver its port number

при sc = pyspark.SparkConf(). Я решил это, запустив

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

который находится в https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-16-04

Ответ 3

Имел ту же проблему с моей iphython ноутбуком (IPython 3.2.1) в Linux (ubuntu).

В моем случае отсутствовал основной URL в среде $PYSPARK_SUBMIT_ARGS (при условии, что вы используете bash):

export PYSPARK_SUBMIT_ARGS="--master spark://<host>:<port>"

например.

export PYSPARK_SUBMIT_ARGS="--master spark://192.168.2.40:7077"

Вы можете поместить это в свой .bashrc файл. Вы получаете правильный URL-адрес в журнале для источника искры (местоположение этого журнала сообщается при запуске мастера с/sbin/start_master.sh).

Ответ 4

Потратив часы и часы на множество различных решений, я могу подтвердить, что Java 10 SDK вызывает эту ошибку. На Mac, пожалуйста, перейдите в /Library/Java/JavaVirtualMachines, затем запустите эту команду, чтобы полностью удалить Java JDK 10:

sudo rm -rf jdk-10.jdk/

После этого загрузите JDK 8, тогда проблема будет решена.

Ответ 5

Я получил ту же ошибку Java gateway process exited......port number, хотя я правильно установил PYSPARK_SUBMIT_ARGS. Я запускаю Spark 1.6 и пытаюсь заставить pyspark работать с IPython4/Jupyter (ОС: ubuntu в качестве гостевой системы VM).

Пока я получил это исключение, я заметил, что был создан hs_err _ *. журнал, и он начинался с:

There is insufficient memory for the Java Runtime Environment to continue. Native memory allocation (malloc) failed to allocate 715849728 bytes for committing reserved memory.

Итак, я увеличил память, выделенную для моего ubuntu через настройку VirtualBox и перезапустил гостевой ubuntu. Затем это исключение Java gateway исчезает, и все работает нормально.

Ответ 6

Я получил тот же Exception: Java gateway process exited before sending the driver its port number в Cloudera VM при попытке запустить IPython с поддержкой CSV с синтаксической ошибкой:

PYSPARK_DRIVER_PYTHON=ipython pyspark --packages com.databricks:spark-csv_2.10.1.4.0

выдает ошибку, а:

PYSPARK_DRIVER_PYTHON=ipython pyspark --packages com.databricks:spark-csv_2.10:1.4.0

не будет.

Разница заключается в последнем двоеточие в последнем (рабочем) примере, разделяя Scala номер версии из версии пакета > .

Ответ 7

В моем случае эта ошибка возникла для script, который раньше работал нормально. Поэтому я понял, что это может быть связано с моим обновлением JAVA. До того, как я использовал java 1.8, но я случайно обновился до java 1.9. Когда я переключился на java 1.8, ошибка исчезла, и все работает нормально. Для тех, кто получает эту ошибку по той же причине, но не знает, как переключиться на более раннюю версию java на ubuntu: пробег

sudo update-alternatives --config java 

и сделайте выбор для java-версии

Ответ 8

Была ли такая же проблема после установки java с использованием нижеподписавшихся проблем решена проблема!

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

Ответ 9

Я понял проблему в системе Windows. В каталоге установки для Java не должно быть пробелов на пути, например в C:\Program Files. Я переустановил Java в C\Java. Я установил JAVA_HOME в C:\Java и проблема исчезла.

Ответ 10

Если это сообщение об ошибке, запущенном pyspark на Ubuntu, избавилось от него, установив openjdk-8-jdk

from pyspark import SparkConf, SparkContext
sc = SparkContext(conf=SparkConf().setAppName("MyApp").setMaster("local"))
^^^ error

Установите Open JDK 8:

apt-get install openjdk-8-jdk-headless -qq    

Ответ 11

У меня такая же ошибка при запуске pyspark в pycharm. Я решил проблему, добавив JAVA_HOME в переменные окружения pycharm.

Ответ 12

У меня было то же исключение, и я попробовал все, устанавливая и сбрасывая все переменные окружения. Но проблема, в конце концов, была детализирована до конца в свойстве appname свойства сеанса spark, то есть "SparkSession.builder.appName(" StreamingDemo "). GetOrCreate()". Сразу после удаления пробела из строки, заданной свойству appname, это было решено. Я использовал pyspark 2.7 с eclipse в среде windows 10. Это сработало для меня. Прилагаются обязательные скриншоты. Error_with space

No Error_without space

Ответ 13

Я получил эту ошибку, потому что у меня мало места на диске.

Ответ 14

У меня было то же исключение: для меня работала java jdk.

Ответ 15

Рабочие часы на этом. Моя проблема заключалась в установке Java 10. Я удалил его и установил Java 8, и теперь Pyspark работает.

Ответ 16

У меня такая же ошибка.

Способы устранения проблем:

  1. Проверьте исходный код искры.
  2. Следуйте за сообщением об ошибке. В моем случае: pyspark/java_gateway.py, строка 93, в launch_gateway.
  3. Проверьте логику кода, чтобы найти основную причину, после чего вы ее разрешите.

В моем случае проблема заключается в том, что PySpark не имеет права создавать временную директорию, поэтому я просто запускаю свою среду IDE с помощью sudo

Ответ 17

Для меня ответ состоял в том, чтобы добавить два "Content Roots" в "Файл" → "Структура проекта" → "Модули" (в IntelliJ):

  1. YourPath\искровым 2.2.1-бен-hadoop2.7\питон
  2. YourPath\искровым 2.2.1-бен-hadoop2.7\питон\Lib\py4j-0.10.4-src.zip

Ответ 18

Это старый поток, но я добавляю свое решение для тех, кто использует mac.

Проблема была в JAVA_HOME. Вы должны включить это в свой .bash_profile.

Проверьте свою java -version. Если вы загрузили последнюю версию Java, но она не отображается как последняя версия, вы знаете, что этот путь неверен. Обычно путь по умолчанию - export JAVA_HOME=/usr/bin/java.

Поэтому попробуйте изменить путь к: /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java

Кроме того, вы также можете загрузить последнюю версию JDK. https://www.oracle.com/technetwork/java/javase/downloads/index.html, и это автоматически заменит usr/bin/java на последнюю версию. Вы можете подтвердить это, снова выполнив java -version.

Тогда это должно сработать.

Ответ 19

Убедитесь, что как ваш каталог Java (как указано в вашем пути), так и ваш интерпретатор Python находятся в каталогах без пробелов в них. Это было причиной моей проблемы.

Ответ 20

Если вы пытаетесь запустить spark без двоичных файлов hadoop, вы можете столкнуться с вышеупомянутой ошибкой. Одним из решений является:

1) скачать hadoop отдельно.
2) добавить hadoop в ваш путь
3) добавьте classpath hadoop к вашей установке SPARK

Первые два шага тривиальны, последний шаг лучше всего сделать, добавив следующее в файл $ SPARK_HOME/conf/spark-env.sh в каждом узле искры (основной и рабочий)

### in conf/spark-env.sh ###

export SPARK_DIST_CLASSPATH=$(hadoop classpath)

для получения дополнительной информации также проверьте: https://spark.apache.org/docs/latest/hadoop-provided.html

Ответ 21

Я использую Mac OS. Я исправил проблему!

Ниже как я это исправил.

JDK8, кажется, работает нормально. (https://github.com/jupyter/jupyter/issues/248)

Итак, я проверил мой JDK /Library/Java/JavaVirtualMachines, у меня только jdk-11.jdk по этому пути.

Я скачал JDK8перешел по ссылке). Который:

brew tap caskroom/versions
brew cask install java8

После этого я добавил

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"

в файл ~/.bash_profile. (Вы должны проверить свое имя файла jdk1.8)

Это работает сейчас! Надеюсь это поможет :)

Ответ 22

В моем случае это было потому, что я написал SPARK_DRIVER_MEMORY=10 вместо SPARK_DRIVER_MEMORY=10g в spark-env.sh

Ответ 23

Для Linux (Ubuntu 18.04) с проблемой JAVA_HOME ключом является указание на главную папку:

  1. Установите Java 8 по умолчанию с помощью: sudo update-alternatives --config java. Если Jave 8 не установлен, установите: sudo apt install openjdk-8-jdk.
  2. Установите переменную среды JAVA_HOME в качестве главной папки java 8. Расположение задается первой командой выше, удаляющей jre/bin/java. А именно: export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/". Если это сделано в командной строке, это будет актуально только для текущего сеанса (ref: команда export в Linux). Для проверки: echo $JAVA_HOME.
  3. Чтобы установить этот параметр постоянно, добавьте жирную строку выше в файл, который запускается перед запуском интерпретатора IDE/Jupyter/python. Это может быть добавлено жирной линией выше к .bashrc. Этот файл загружается при интерактивном запуске bash ref:.bashrc

Ответ 24

Есть много причин для этой ошибки. Моя причина в том, что версия pyspark несовместима с spark. версия pyspark: 2.4.0, но версия spark - 2.2.0. это всегда приводит к тому, что python всегда терпит неудачу при запуске процесса искры тогда spark не может сообщить свои порты python. поэтому ошибка будет "Pyspark: Исключение: процесс шлюза Java завершился до отправки драйверу его номера порта".

Я предлагаю вам погрузиться в исходный код, чтобы узнать реальные причины, когда эта ошибка происходит

Ответ 25

Я исправляю эту ошибку, используя приведенный ниже код. Я настроил SPARK_HOME, хотя. Вы можете следовать этим простым шагам с сайта eproblems

spark_home = os.environ.get('SPARK_HOME', None)