Runtime error java gateway process exited before sending its port number

This tutorial demonstrates the Java gateway process exited before sending the driver its port number error in Java.
Java Gateway Process Exited Before Sending Its Port Number

This tutorial demonstrates the Java gateway process exited before sending the driver its port number error in Java.

Java Gateway Process Exited Before Sending the Driver Its Port Number

PySpark is used to write Spark applications using Python APIs and provides a shell for interactively analyzing the data in a distributed environment.

While running the PySpark application in PySpark Shell, spark-submit, or even from spyder the error Pyspark: Exception: Java gateway process exited before sending the driver its port number can occur.

If you want to run PySpark on your Windows, Mac, or Linux, you must install Java on your machine because PySpark is usually considered to work as a Python framework. The reason for this error to occur is that either you haven’t set the JAVA_HOME or PYSPARK_SUBMIT_ARGS.

Here are the solutions to solve the Pyspark: Exception: Java gateway process exited before sending the driver its port number error.

Install Open JDK or Oracle JDK

You must wonder why you need Java to run PySpark. It is because the Spark is basically written in Scala, but later the industry adopted its API, so the PySpark was released for Python using the Py4J, as Py4J is a Java Library that is why Java is required to run PySpark.

Py4J is integrated into PySpark, allowing Python to interface with JVM objects.

We can use the following command to install the OpenJDK.

# Installing Open JDK
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-11-jdk

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

Once the JDK is installed, you need to set the JAVA_HOME path and follow the steps below.

  • Find your JDK path; if Java is installed, the path will be /usr/lib/jvm/java-1.x.x-openjdk.
  • Now run the following command to set the JAVA_HOME path.
    export JAVA_HOME=/usr/lib/jvm/java-1.x.x-openjdk
    
  • The command will set the JAVA_HOME path to verify run echo $JAVA_HOME, showing the Java installation path.

The above commands are for the Linux environments for Windows. The installers can be downloaded from here:

  1. OpenJDK
  2. Oracle

To set the JAVA_HOME at Windows, follow the steps below.

  • Search Environment Variables in the Windows search bar.
  • Open Edit the system environment variables.
  • Click the Environment Variables button to open environment variables.
  • In the system variables, click New.
  • The name will be JAVA_HOME.
  • The value will be the installation path, for example, C:Program FilesJavajdk-17.0.2.
  • After putting the name and value, click OK and Apply changes.

Set PYSPARK_SUBMIT_ARGS

Most of the time, the error Pyspark: Exception: Java gateway process exited before sending the driver its port number occurs when the PYSPARK_SUBMIT_ARGS is not set. Use the following command to set the PYSPARK_SUBMIT_ARGS.

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

The above command will set the PYSPARK_SUBMIT_ARGS using the master. Following both solutions will solve the problem.

Problem: While running PySpark application through spark-submit, Spyder or even from PySpark shell I am getting Pyspark: Exception: Java gateway process exited before sending the driver its port number.

In order to run PySpark (Spark with Python) you would need to have Java installed on your Mac, Linux or Windows, without Java installation & not having JAVA_HOME environment variable set with Java installation path or not having PYSPARK_SUBMIT_ARGS, you would get Exception: Java gateway process exited before sending the driver its port number.

Set PYSPARK_SUBMIT_ARGS

Set PYSPARK_SUBMIT_ARGS with master, this resolves Exception: Java gateway process exited before sending the driver its port number.


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

vi ~/.bashrc , add the above line and reload the bashrc file using source ~/.bashrc

Incase if issue still doesn’t resolve, check your Java installation and JAVA_HOME environment variable.

Install Open JDK

Why you need Java to run PySpark?

Spark basically written in Scala and later on due to its industry adaptation it’s API PySpark released for Python using Py4J. Py4J is a Java library that is integrated within PySpark and allows python to dynamically interface with JVM objects, hence to run PySpark you also need Java to be installed along with Python, and Apache Spark.

Use below commands to install OpenJDK or Oracle JDK on Linux Ubuntu.


# To Install Open JDK
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-11-jdk

# To Install Oracke JDK varsion 8
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

Set JAVA_HOME Environment Variable

Now export JAVA_HOME with the java installation directory.


export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

vi ~/.bashrc , add the above line and reload the bashrc file using source ~/.bashrc

Happy Learning

Related Articles

  • PySpark “ImportError: No module named py4j.java_gateway” Error
  • How to Import PySpark in Python Script
  • PySpark install on Windows
  • PySpark NOT isin() or IS NOT IN Operator
  • PySpark alias() Column & DataFrame Examples
  • Fonctions filter where en PySpark | Conditions Multiples

Post author avatar

NNK

SparkByExamples.com is a Big Data and Spark examples community page, all examples are simple and easy to understand and well tested in our development environment Read more ..

Ezoic

Я пытаюсь запустить 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 в CJava. Я установил 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питонLibpy4j-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)

Понравилась статья? Поделить с друзьями:
  • Runtime error класс не зарегистрирован excel
  • Runtime error invalid setface vertex index
  • Runtime error как починить
  • Runtime error invalid memory address or nil pointer dereference goroutine 6
  • Runtime error как исправить эту ошибку