wake-up-neo.net

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

Ich versuche, Pyspark auf meinem Macbook Air zu betreiben. Wenn ich versuche, es zu starten, erhalte ich die Fehlermeldung:

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

wenn sc = SparkContext () beim Start aufgerufen wird. Ich habe versucht, die folgenden Befehle auszuführen:

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

ohne Erfolg Ich habe auch hier gesucht:

Spark + Python - Java-Gateway-Prozess wurde vor dem Senden der Portnummer des Treibers beendet?

aber die Frage wurde nie beantwortet. Bitte helfen Vielen Dank.

32
mt88

das sollte dir helfen

Eine Lösung ist das Hinzufügen von pyspark-Shell zur Shell-Umgebungsvariablen PYSPARK_SUBMIT_ARGS:

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

Es gibt eine Änderung in python/pyspark/Java_gateway.py, die erfordert, dass PYSPARK_SUBMIT_ARGS pyspark-Shell enthält, wenn eine PYSPARK_SUBMIT_ARGS-Variable von einem Benutzer festgelegt wird.

18
Anup Ash

Ein möglicher Grund dafür ist, dass Java_HOME nicht festgelegt ist, da Java nicht installiert ist.

Ich bin auf das gleiche Problem gestoßen. Es sagt 

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

bei sc = pyspark.SparkConf(). Ich habe es durch Laufen gelöst

Sudo add-apt-repository ppa:webupd8team/Java
Sudo apt-get update
Sudo apt-get install Oracle-Java8-installer

welches ist von https://www.digitalocean.com/community/tutorials/how-to-install-Java-with-apt-get-on-ubuntu-16-04

17
Old Panda

Hatte das gleiche Problem mit meinem iphython-Notebook (IPython 3.2.1) unter Linux (ubuntu).

Was in meinem Fall fehlte, war das Festlegen der Master-URL in der $ PYSPARK_SUBMIT_ARGS-Umgebung wie folgt (vorausgesetzt, Sie verwenden bash): 

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

z.B.

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

Sie können dies in Ihre .bashrc-Datei einfügen. Sie erhalten die korrekte URL im Protokoll für den Spark-Master (der Speicherort für dieses Protokoll wird angegeben, wenn Sie den Master mit /sbin/start_master.sh starten).

4
quax

Ich hatte die gleiche Ausnahme und habe alles versucht, indem ich alle Umgebungsvariablen gesetzt und zurückgesetzt habe. Am Ende wurde das Problem jedoch in der Eigenschaft "appname" von spark session, also "SparkSession.builder.appName (" StreamingDemo "). GetOrCreate ()" auf den Speicherplatz reduziert. Unmittelbar nach dem Entfernen des Speicherplatzes Ich habe Pyspark 2.7 mit Eclipse unter Windows 10 verwendet. Es hat bei mir funktioniert. Anbei sind Screenshots erforderlich. Error_with space

No Error_without space

1
A known

Hatte diese Fehlermeldung pyspark unter Ubuntu ausgeführt, wurde sie durch die Installation des Pakets openjdk-8-jdk entfernt

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

Installieren Sie Open JDK 8:

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

Nach stundenlangem Ausprobieren verschiedener Lösungen kann ich bestätigen, dass Java 10 SDK diesen Fehler verursacht. Navigieren Sie auf einem Mac zu/Library/Java/JavaVirtualMachines und führen Sie dann den folgenden Befehl aus, um Java JDK 10 vollständig zu deinstallieren:

Sudo rm -rf jdk-10.jdk/

Danach laden Sie bitte JDK 8 herunter, um das Problem zu lösen.

1
Kiem Nguyen

In meinem Fall trat dieser Fehler für das Skript auf, das zuvor einwandfrei lief. Also habe ich herausgefunden, dass dies an meinem Java-Update liegen könnte. Vorher habe ich Java 1.8 verwendet, war aber aus Versehen auf Java 1.9 aktualisiert worden. Als ich wieder auf Java 1.8 umgestiegen bin, ist der Fehler verschwunden und alles läuft einwandfrei. Für diejenigen, die diesen Fehler aus dem gleichen Grund erhalten, aber nicht wissen, wie sie auf ubuntu:

Sudo update-alternatives --config Java 

und treffen Sie die Auswahl für die Java-Version

1
Pankaj Kumar

Ich habe die gleiche Java gateway process exited......port number Ausnahme, obwohl ich PYSPARK_SUBMIT_ARGS Richtig eingestellt habe. Ich führe Spark 1.6 aus und versuche, pyspark mit IPython4/Jupyter zum Laufen zu bringen (Betriebssystem: ubuntu as VM guest)).

Während ich diese Ausnahme erlebte, bemerkte ich, dass ein hs_err _ *. -Protokoll generiert wurde und es begann mit:

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

Also habe ich den für mein Ubuntu zugewiesenen Speicher über die VirtualBox-Einstellung erhöht und das Gast-Ubuntu neu gestartet. Dann verschwindet diese Java gateway - Ausnahme und alles hat gut geklappt.

1
Ida

Ich habe das gleiche Exception: Java gateway process exited before sending the driver its port number in Cloudera VM erhalten, als ich versuchte, IPython mit CSV-Unterstützung mit einem Syntaxfehler zu starten:

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

wird den Fehler werfen, während:

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

wird nicht.

Der Unterschied besteht im letzten Doppelpunkt im letzten (Arbeits -) Beispiel, indem die Versionsnummer Scala von der Paketversionsnummer getrennt wird.

1
Pim Schaaf

Ich habe den gleichen Fehler beim Ausführen von pyspark in pycharm ... Ich habe das Problem durch Hinzufügen von Java_HOME in den Umgebungsvariablen von pycharm gelöst.

1
Joon

Hatte dasselbe Problem, nachdem Java unter Verwendung der folgenden Zeilen installiert wurde, das Problem gelöst!

Sudo add-apt-repository ppa:webupd8team/Java
Sudo apt-get update
Sudo apt-get install Oracle-Java8-installer
1
Coral

Ich habe das Problem unter Windows herausgefunden. Das Installationsverzeichnis für Java darf keine Leerzeichen im Pfad enthalten, z. B. in C:\Program Files. Ich habe Java in C\Java neu installiert. Ich habe Java_HOME auf C:\Java gesetzt und das Problem ist verschwunden.

1
Sujan Mukherjee

Dies ist ein alter Thread, aber ich füge meine Lösung für diejenigen hinzu, die Mac verwenden.

Das Problem war mit dem Java_HOME. Sie müssen dies in Ihren .bash_profile aufnehmen.

Überprüfen Sie Ihren Java -version. Wenn Sie das neueste Java heruntergeladen haben, es jedoch nicht als neueste Version angezeigt wird, wissen Sie, dass der Pfad falsch ist. Normalerweise lautet der Standardpfad export Java_HOME= /usr/bin/Java

Ändern Sie also den Pfad in: /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/Java

Alternativ können Sie auch das neueste JDK . https://www.Oracle.com/technetwork/Java/javase/downloads/index.html herunterladen, wodurch usr/bin/Java automatisch durch die neueste Version ersetzt wird. Sie können dies durch erneutes Ausführen von Java -version bestätigen.

Dann sollte das klappen.

0
noiivice

Wenn Sie versuchen, spark ohne hadoop-Binärdateien auszuführen, tritt möglicherweise der oben genannte Fehler auf. Eine Lösung besteht darin,

1) Hadoop getrennt herunterladen.
2) addiere hadoop zu deinem PFAD
3) füge hadoop classpath zu deiner SPARK install hinzu

Die ersten beiden Schritte sind trivial. Der letzte Schritt kann am besten ausgeführt werden, indem in die $ SPARK_HOME/conf/spark-env.sh in jedem spark node (master and workers)

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

export SPARK_DIST_CLASSPATH=$(hadoop classpath)

weitere Informationen finden Sie auch unter: https://spark.Apache.org/docs/latest/hadoop-provided.html

0
natbusa

Für Linux (Ubuntu 18.04) mit einem Java_HOME-Problem besteht ein Schlüssel darin, auf den Master-Ordner zu verweisen:

  1. Setzen Sie Java 8 als Standard von: Sudo update-alternatives --config Java. Wenn Jave 8 nicht installiert ist, installieren Sie es von : Sudo apt install openjdk-8-jdk.
  2. Legen Sie die Umgebungsvariable Java_HOME Als Master-Ordner Java 8) fest. Der Speicherort wird durch den ersten angegeben Befehl über dem Entfernen von jre/bin/Java. Nämlich: export Java_HOME="/usr/lib/jvm/Java-8-openjdk-AMD64/". Wenn in der Befehlszeile ausgeführt, ist dies nur relevant für die aktuelle Sitzung ( ref: export command on Linux ). Zur Überprüfung: echo $Java_HOME.
  3. Um dies dauerhaft festzulegen, fügen Sie die fett gedruckte Linie oben zu einer Datei hinzu, die ausgeführt wird, bevor Sie Ihren IDE/Jupyter/Python-Interpreter starten. Dies kann durch Hinzufügen der fett gedruckten Linie zu .bashrc geschehen. Diese Datei wird geladen, wenn eine Bash interaktiv gestartet wird ref: .bashrc
0
Ran Feldesh

In meinem Fall war es, weil ich schrieb SPARK_DRIVER_MEMORY=10 anstatt SPARK_DRIVER_MEMORY=10g im spark-env.sh

0
hayj

Ich hatte die gleiche Ausnahme: Die Installation von Java jdk hat für mich funktioniert.

0
Julen Rebollo

Für mich bestand die Antwort darin, zwei "Inhaltswurzeln" unter "Datei" -> "Projektstruktur" -> "Module" (in IntelliJ) hinzuzufügen:

  1. YourPath\spark-2.2.1-bin-hadoop2.7\python
  2. YourPath\spark-2.2.1-bin-hadoop2.7\python\lib\py4j-0.10.4-src.Zip
0
Yuuura87

Es gibt so viele Gründe für diesen Fehler. Mein Grund ist: Die Version von Pyspark ist nicht mit Spark kompatibel. pyspark version: 2.4.0, aber spark version ist 2.2.0. es verursacht immer python beim starten immer spark = process. then spark kann seine Ports nicht an Python weiterleiten. Daher lautet der Fehler "Pyspark: Ausnahme: Java Gateway-Prozess beendet, bevor dem Treiber seine Portnummer gesendet wird ".

Ich empfehle Ihnen, in den Quellcode einzutauchen, um die wahren Gründe für diesen Fehler herauszufinden

0
ZhangXu

Arbeitsstunden dazu. Mein Problem war die Installation von Java 10. Ich habe es deinstalliert und Java 8 installiert, und jetzt funktioniert Pyspark.

0
Amin Ghaderi

Ich gehe diesen Fehler mit dem folgenden Code behoben. Ich hatte allerdings das SPARK_HOME eingerichtet. Sie können diesen einfachen Schritten von eproblems website folgen

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

Stellen Sie sicher, dass sich sowohl Ihr Java-Verzeichnis (wie in Ihrem Pfad gefunden) UND Ihr Python-Interpreter in Verzeichnissen ohne Leerzeichen befinden. Dies war die Ursache meines Problems.

0
Steven

Ich benutze Mac OS. Ich habe das Problem behoben!

Unten ist, wie ich es behoben habe.

JDK8 scheint gut zu funktionieren. ( https://github.com/jupyter/jupyter/issues/248 )

Also habe ich mein JDK /Library/Java/JavaVirtualMachines überprüft, ich habe nur jdk-11.jdk in diesem Pfad.

Ich JDK8 heruntergeladen (Ich folgte dem Link). Welches ist:

brew tap caskroom/versions
brew cask install Java8

Danach habe ich hinzugefügt

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

in ~/.bash_profile Datei. (Sie sollten Ihren jdk1.8-Dateinamen überprüfen)

Es funktioniert jetzt! Ich hoffe das hilft :)

0
shihs

Ich habe diesen Fehler erhalten, weil mir der Festplattenspeicher knapp wurde.

0
Josh Terrell

Ich habe den gleichen Fehler.

Meine Verfahren zur Fehlersuche sind:

  1. Schauen Sie sich den Quellcode von Spark an.
  2. Folgen Sie der Fehlermeldung. In meinem Fall: pyspark/Java_gateway.py, Zeile 93, in launch_gateway.
  3. Überprüfen Sie die Codelogik, um die Hauptursache zu finden, und lösen Sie sie dann auf.

In meinem Fall besteht das Problem darin, dass PySpark keine Berechtigung zum Erstellen eines temporären Verzeichnisses hat. Daher führe ich einfach meine IDE mit Sudo aus

0
J.Bo