Der Java-Gateway-Prozess wurde beendet, bevor seine Portnummer gesendet wurde

Sheeraz Gul 20 Juni 2023
Der Java-Gateway-Prozess wurde beendet, bevor seine Portnummer gesendet wurde

Dieses Tutorial demonstriert den Fehler Java-Gateway-Prozess beendet, bevor dem Treiber seine Portnummer gesendet wird in Java.

Der Java-Gateway-Prozess wurde beendet, bevor dem Treiber seine Portnummer gesendet wurde

PySpark wird zum Schreiben von Spark-Anwendungen unter Verwendung von Python-APIs verwendet und stellt eine Shell zum interaktiven Analysieren der Daten in einer verteilten Umgebung bereit.

Beim Ausführen der PySpark-Anwendung in PySpark Shell, spark-submit oder sogar von spyder kann der Fehler Pyspark: Exception: Java gateway process exited before sending the driver its port number auftreten.

Wenn Sie PySpark auf Ihrem Windows, Mac oder Linux ausführen möchten, müssen Sie Java auf Ihrem Computer installieren, da PySpark normalerweise als Python-Framework betrachtet wird. Der Grund für diesen Fehler ist, dass Sie entweder JAVA_HOME oder PYSPARK_SUBMIT_ARGS nicht eingestellt haben.

Hier sind die Lösungen zur Behebung des Fehlers Pyspark: Ausnahme: Java-Gateway-Prozess beendet, bevor dem Treiber seine Portnummer gesendet wird.

Installieren Sie Open JDK oder Oracle JDK

Sie müssen sich fragen, warum Sie Java brauchen, um PySpark auszuführen. Das liegt daran, dass Spark grundsätzlich in Scala geschrieben ist, aber später die Industrie seine API übernommen hat, also wurde PySpark für Python mit Py4J veröffentlicht, da Py4J eine Java-Bibliothek ist, weshalb Java wird benötigt, um PySpark auszuführen.

Py4J ist in PySpark integriert, wodurch Python eine Schnittstelle mit JVM-Objekten herstellen kann.

Wir können den folgenden Befehl verwenden, um das OpenJDK zu installieren.

# 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

Sobald das JDK installiert ist, müssen Sie den Pfad JAVA_HOME festlegen und die folgenden Schritte ausführen.

  • Finden Sie Ihren JDK-Pfad; wenn Java installiert ist, lautet der Pfad /usr/lib/jvm/java-1.x.x-openjdk.
  • Führen Sie nun den folgenden Befehl aus, um den Pfad JAVA_HOME festzulegen.
    export JAVA_HOME=/usr/lib/jvm/java-1.x.x-openjdk
    
  • Der Befehl legt den Pfad JAVA_HOME fest, um zu überprüfen, ob echo $JAVA_HOME ausgeführt wird, und zeigt den Java-Installationspfad an.

Die obigen Befehle gelten für die Linux-Umgebungen für Windows. Die Installer können hier heruntergeladen werden:

  1. OpenJDK
  2. Orakel

Um das JAVA_HOME unter Windows einzustellen, gehen Sie wie folgt vor.

  • Suchen Sie in der Windows-Suchleiste nach Umgebungsvariablen.
  • Öffnen Sie Systemumgebungsvariablen bearbeiten.
  • Klicken Sie auf die Schaltfläche Umgebungsvariablen, um Umgebungsvariablen zu öffnen.
  • Klicken Sie in den Systemvariablen auf Neu.
  • Der Name lautet JAVA_HOME.
  • Der Wert ist der Installationspfad, zum Beispiel C:\Program Files\Java\jdk-17.0.2.
  • Nachdem Sie den Namen und den Wert eingegeben haben, klicken Sie auf OK und Änderungen übernehmen.

Stellen Sie PYSPARK_SUBMIT_ARGS ein

Meistens tritt der Fehler Pyspark: Exception: Java gateway process exited before sending the driver its port number auf, wenn PYSPARK_SUBMIT_ARGS nicht gesetzt ist. Verwenden Sie den folgenden Befehl, um PYSPARK_SUBMIT_ARGS festzulegen.

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

Der obige Befehl setzt den PYSPARK_SUBMIT_ARGS mit dem master. Wenn Sie beide Lösungen befolgen, wird das Problem gelöst.

Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Verwandter Artikel - Java Exception