PYSPARKER: Uitzondering: Java Gateway-proces is verlaten voordat het stuurprogramma zijn poortnummer

Ik probeer Pyspark op mijn MacBook Air te rennen. Wanneer ik het start, krijg ik de foutmelding:

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

Wanneer SC = SparkContext () wordt opgeroepen bij het opstarten. Ik heb geprobeerd de volgende opdrachten uit te voeren:

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

zonder baten. Ik heb hier ook gekeken:

Spark + Python – Java Gateway-proces is verlaten voordat het stuurprogramma zijn poortnummer verzendt?

Maar de vraag is nooit beantwoord. Help alstublieft! Bedankt.


1, Autoriteit 100%

Eén mogelijke reden is Java_Home is niet ingesteld omdat Java niet is geïnstalleerd.

Ik heb hetzelfde probleem tegengekomen. Het zegt

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

op sc = pyspark.SparkConf(). Ik heb het opgelost door uit te voeren

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

die afkomstig is van https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-16-04


Antwoord 2, autoriteit 81%

dit zou je moeten helpen

Eén oplossing is het toevoegen van pyspark-shell aan de shell-omgevingsvariabele PYSPARK_SUBMIT_ARGS:

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

Er is een wijziging in python/pyspark/java_gateway.py , die vereist dat PYSPARK_SUBMIT_ARGS pyspark-shell bevat als een PYSPARK_SUBMIT_ARGS-variabele is ingesteld door een gebruiker.


Antwoord 3, autoriteit 38%

Als deze foutmelding pyspark draait op Ubuntu, heb ik deze verwijderd door het openjdk-8-jdk-pakket

te installeren

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

Installeer Open JDK 8:

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

Op MacOS

Hetzelfde op Mac OS, ik typte een terminal in:

$ java -version
No Java runtime present, requesting install. 

Ik werd gevraagd om Java te installeren vanaf de Oracle’s downloadsite, koos het MacOS-installatieprogramma, klikte op jdk-13.0.2_osx-x64_bin.dmgen controleerde daarna of Java was geïnstalleerd

$ java -version
java version "13.0.2" 2020-01-14

BEWERKEN Om JDK 8 te installeren, moet je naar https:// www.oracle.com/java/technologies/javase-jdk8-downloads.html(inloggen vereist)

Daarna kon ik een Spark-context starten met pyspark.

Controleren of het werkt

In Python:

from pyspark import SparkContext 
sc = SparkContext.getOrCreate() 
# check that it really works by running a job
# example from http://spark.apache.org/docs/latest/rdd-programming-guide.html#parallelized-collections
data = range(10000) 
distData = sc.parallelize(data)
distData.filter(lambda x: not x&1).take(10)
# Out: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

Merk op dat u mogelijk de omgevingsvariabelen wilt instellen PYSPARK_PYTHONen PYSPARK_DRIVER_PYTHONEN ZE MOETEN DEZELFDE PYTHON-versie ZIJN ALS PYTHON (OF IPYTHON) die u gebruikt? om Pyspark (de bestuurder) uit te voeren.


4, Autoriteit 19%

had hetzelfde probleem met mijn iPhython-notebook (Ipython 3.2.1) op Linux (Ubuntu).

Wat in mijn geval ontbrak, was de Master URL in de $ PYSPARK_SUBMIT_ARGS-omgeving zoals deze instelling (ervan uitgaande dat u BASH gebruikt):

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

b.g

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

U kunt dit in uw .bashrc-bestand plaatsen. U krijgt de juiste URL in het logboek voor de Spark Master (de locatie voor dit logboek wordt gerapporteerd wanneer u de Master met /sbin/start_master.SH) start).


5, Autoriteit 16%

Na het doorbrengen van uren en uren die veel verschillende oplossingen proberen, kan ik bevestigen dat Java 10 SDK deze fout veroorzaakt. Op Mac, Navigeer naar / Library / Java / JavavirtualMachines en voer deze opdracht vervolgens uit om Java JDK 10 volledig te verwijderen:

sudo rm -rf jdk-10.jdk/

Download hierna JDK 8 en het probleem zal worden opgelost.


6, Autoriteit 12%

Ik gebruik Mac OS. Ik heb het probleem opgelost!

Hieronder is hoe ik het heb gerepareerd.

JDK8 lijkt goed te werken. (https://github.com/jupyter/jupyter/issues/248)

Dus ik heb mijn JDK /Library/Java/JavaVirtualMachinesgecontroleerd, ik heb alleen jdk-11.jdkin dit pad.

Ik JDK8 gedownload(ik volgde de link).
Dat is:

brew tap caskroom/versions
brew cask install java8

Hierna heb ik toegevoegd

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

naar ~/.bash_profilebestand. (je moet je jdk1.8-bestandsnaam controleren)

Het werkt nu!
Ik hoop dat dit helpt 🙂


Antwoord 7, autoriteit 12%

Spark is erg kieskeurig met de Java-versie die je gebruikt. Het wordt sterk aanbevolen om Java 1.8 te gebruiken (de open source AdoptOpenJDK 8 werkt ook goed).
Nadat je het hebt geïnstalleerd, stel je JAVA_HOMEin op je bash-variabelen, als je Mac/Linux gebruikt:

export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

export PATH=$JAVA_HOME/bin:$PATH


Antwoord 8, autoriteit 12%

Ik zal hoe ik het heb opgelosthier opnieuw posten, alleen voor toekomstige referenties.

p>

Hoe ik mijn soortgelijk probleem heb opgelost

Vereiste:

  1. anaconda al geïnstalleerd
  2. Spark al geïnstalleerd (https://spark.apache.org/downloads.html)
  3. Pyspark al geïnstalleerd (https://anaconda.org/conda-forge/pyspark )

Stappen die ik deed (Opmerking: Stel het mappad dienovereenkomstig in op uw systeem)

  1. Stel de volgende omgevingsvariabelen in.
  2. Spark_Home to ‘C: \ spark \ vonk-3.0.1-bin-Hadoop2.7’
  3. Set Hadoop_Home naar ‘C: \ spark \ vonk-3.0.1-bin-Hadoop2.7’
  4. Stel Pyspark_Driver_Python in op ‘JUPYTER’
  5. Stel Pyspark_Driver_Pypython_opts in op ‘Notebook’
  6. Toevoegen ‘C: \ vonk \ vonk-3.0.1-bin-Hadoop2.7 \ bin;’ om het systeemvariabele te pakken.
  7. Wijzig de JAVA geïnstalleerde map rechtstreeks onder C: (eerder is Java geïnstalleerd onder programmabestanden, dus ik werd rechtstreeks opnieuw geïnstalleerd
    onder c:)
  8. Dus mijn Java_Home zal zo worden ‘C: \ java \ jdk1.8.0_271’

nu. het werkt!


9, Autoriteit 6%

Ik heb hetzelfde Java gateway process exited......port numberuitzondering, ook al heb ik PYSPARK_SUBMIT_ARGScorrect ingesteld. Ik heb vonk 1.6 en probeer pyspark te krijgen om met IPYTHON4 / JUPLYTER (OS: Ubuntu als VM-gast) te werken).

Hoewel ik deze uitzondering kreeg, zag ik een HS_ERR _ *. Log is gegenereerd en het begon met:

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

Dus heb ik het geheugen verhoogd dat is toegewezen voor mijn Ubuntu via virtualbox-instelling en startte de gast Ubuntu opnieuw op. Dan gaat deze Java gatewayUitzondering weg en alles werkte goed.


10, Autoriteit 6%

Ik kreeg dezelfde Exception: Java gateway process exited before sending the driver its port numberstuurde in Cloudera VM bij het starten van IPython met CSV-ondersteuning met een syntaxisfout:

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

geeft de fout, terwijl:

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

niet.

Het verschil zit in die laatste dubbele puntin het laatste (werkende) voorbeeld, waarbij het Scala-versienummerwordt gescheiden van het pakketversienummer.


Antwoord 11, autoriteit 6%

In mijn geval kwam deze fout voor het script dat voorheen goed werkte. Dus ik kwam erachter dat dit misschien te wijten is aan mijn JAVA-update. Voordat ik java 1.8 gebruikte, had ik per ongeluk geüpdatet naar java 1.9. Toen ik terugschakelde naar java 1.8 verdween de fout en loopt alles goed.
Voor degenen die deze fout om dezelfde reden krijgen, maar niet weten hoe ze terug moeten schakelen naar een oudere Java-versie op ubuntu:
rennen

sudo update-alternatives --config java 

en maak de keuze voor de java-versie


Antwoord 12, autoriteit 6%

Als u Spark probeert uit te voeren zonder hadoop-binaire bestanden, kunt u de bovengenoemde fout tegenkomen. Een oplossing is om:

1) hadoop afzonderlijk downloaden.
2) voeg hadoop toe aan je PATH
3) voeg hadoop classpath toe aan uw SPARK-installatie

De eerste twee stappen zijn triviaal, de laatste stap kan het beste worden gedaan door het volgende toe te voegen in $SPARK_HOME/conf/spark-env.sh in elke spark-node (master en worker)

### in conf/spark-env.sh ###
export SPARK_DIST_CLASSPATH=$(hadoop classpath)

Voor meer informatie Controleer ook: https://spark.apache.org /docs/latest/hadoop-provided.html


13, Autoriteit 3%

Ik kreeg deze fout omdat ik laag op schijfruimte had.


14, Autoriteit 3%

had hetzelfde probleem, na het installeren van Java met behulp van onderstaande lijnen het probleem opgelost!

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

15, Autoriteit 3%

Ik heb het probleem in Windows-systeem ontdekt. De installatiemap voor Java mag geen blanco’s in het pad hebben, zoals in C:\Program Files. Ik heb Java opnieuw geïnstalleerd in C\Java. Ik heb JAVA_HOMEingesteld op C:\Javaen het probleem ging weg.


16, Autoriteit 3%

Ik heb dezelfde fout in het uitvoeren van Pyspark in Pycharm.
Ik heb het probleem opgelost door Java_Home in Pycharm’s Milieuvariabelen toe te voegen.


17, Autoriteit 3%

Ik had dezelfde uitzondering en ik probeerde alles door alle milieuvariabelen in te stellen en te resetten. Maar het probleem in het einde geboord tot de ruimte in APPNAME-eigendom van Spark Session, dat wil zeggen, “sparksession.builder.appname (” Streamingdemo “). Getorcreate ()”. Direct na het verwijderen van de ruimte van string gegeven aan appname-eigenschap werd het opgelost. Ik gebruik Pyspark 2.7 met Eclipse op Windows 10-omgeving. Het werkte voor mij.
Omsloten zijn verplicht screenshots.


18, Autoriteit 3%

Dit gebeurt meestal als u geen Java hebt geïnstalleerd in uw machine.

Ga naar opdracht-prompt en controleer de versie van uw Java:
Type: java -version

U moet de uitvoer sth zoals deze krijgen

java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)

Zo niet, ga naar Orcale en download JDK.
Controleer deze video over het downloaden van Java en voeg deze toe aan het buildpath.

https://www.youtube.com/watch?v=f7rt0h1q5wo


19, Autoriteit 3%

Ik had dezelfde fout met Pyspark en instelling Java_Home naar Java 11 werkte voor mij (het werd oorspronkelijk ingesteld op 16). Ik gebruik maco’s en pycharm.
U kunt uw huidige Java-versie controleren door echo $JAVA_HOMEte doen.

Hieronder werkte wat voor mij. Op mijn Mac heb ik de volgende opdracht Homebrew gebruikt, maar je kunt een andere methode gebruiken om de gewenste Java-versie te installeren, afhankelijk van je besturingssysteem.

# Install Java 11 (I believe 8 works too)
$ brew install openjdk@11
# Set JAVA_HOME by assigning the path where your Java is
$ export JAVA_HOME=/usr/local/opt/openjdk@11

OPMERKING: als u het gebruik van homebrew hebt geïnstalleerd en de locatie van het pad wilt vinden, kunt u doen $ brew --prefix openjdk@11en het zou een pad als deze moeten retourneren: /usr/local/opt/openjdk@11

Op dit punt zou ik mijn Pyspark-programma uit de terminal kunnen uitvoeren – maar mijn IDE (Pycharm) had nog steeds dezelfde fout totdat ik de Java_Home-variabele veranderde.

Om de variabele bij te werken, controleer dan eerst of u de ZSH of Bash Shell gebruikt door echo $SHELLop de opdrachtregel te gebruiken. Voor ZSH, bewerkt u de ~/.zshenvbestand en voor bash, u bewerkt de ~/.bash_profile.

# open the file
$ vim ~/.zshenv
OR
$ vim ~/.bash_profile
# once inside the file, set the variable with your Java path, then save and close the file
export JAVA_HOME=/usr/local/opt/openjdk@11
# test if it was set successfully
$ echo $JAVA_HOME
/usr/local/opt/openjdk@11

Na deze stap kan ik ook Pyspark via mijn Pycharm IDE rennen.


20

werkte uren over. Mijn probleem was bij Java 10-installatie. Ik heb het verwijderd en installeerde Java 8 en nu werkt Pyspark.


21

Ik heb dezelfde fout.

Mijn probleemopnameprocedures zijn:

  1. Bekijk vonkbroncode.
  2. Volg het foutbericht. In mijn geval: pyspark/java_gateway.py, regel 93, in launch_gateway.
  3. Controleer de code Logic om de oorzaak te vinden, dan zul je het oplossen.

In mijn geval is het probleem Pyspark geen toestemming om een ​​tijdelijke map te maken, dus ik loop gewoon mijn IDE met sudo


22

Voor mij was het antwoord om twee ‘inhoudswortels’ in ‘File’ – & GT toe te voegen; ‘Projectstructuur’ – & GT; ‘Modules’ (in Intellij):

  1. YourPath \ Spark-2.2.1-Bin-Hadoop2.7 \ Python
  2. yourpath \ vonk-2.2.1-bin-Hadoop2.7 \ python \ lib \ py4j-0.10.4-src.zip

23

Dit is een oude draad, maar ik voeg mijn oplossing toe voor degenen die Mac gebruiken.

Het probleem was met de JAVA_HOME. U moet dit opnemen in uw .bash_profile.

Controleer uw java -version. Als u de nieuwste Java hebt gedownload, maar het verschijnt niet als de nieuwste versie, dan weet u dat het pad verkeerd is. Normaal gesproken is het standaardpad export JAVA_HOME= /usr/bin/java.

Probeer het pad te veranderen naar:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java

U kunt ook de nieuwste JDK downloaden.
https://www.oracle.com/technetwork/java/javase/ Downloads / Index.html en dit vervangt automatisch usr/bin/javanaar de nieuwste versie. U kunt dit bevestigen door java -versionopnieuw te doen.

Dan zou dat moeten werken.


24

Zorg ervoor dat zowel uw Java-directory (zoals gevonden in uw pad) en uw Python-tolk in mappen zonder spaties erin verblijven. Dit waren de oorzaak van mijn probleem.


25

In mijn geval was het omdat ik schreef SPARK_DRIVER_MEMORY=10in plaats van SPARK_DRIVER_MEMORY=10gin spark-env.sh


Antwoord 26

Er zijn zoveel redenen voor deze fout. Mijn reden is: de versie van pyspark is niet compatibel met spark.
pyspark-versie: 2.4.0, maar de Spark-versie is 2.2.0.
het veroorzaakt altijd dat python altijd faalt bij het starten van het vonkproces. dan kan Spark zijn poorten niet aan Python vertellen. dus de fout is “Pyspark: uitzondering: Java-gatewayproces is afgesloten voordat het stuurprogramma zijn poortnummer heeft verzonden”
“.

Ik raad je aan in de broncode te duiken om erachter te komen wat de echte redenen zijn wanneer deze fout optreedt


Antwoord 27

Ik ga deze fout oplossen door de onderstaande code te gebruiken. Ik had echter de SPARK_HOME ingesteld. U kunt deze eenvoudige stappen volgen van problemen website

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

Antwoord 28

De fout is opgetreden omdat JAVA niet op de computer is geïnstalleerd.
Spark is ontwikkeld in scala die meestal op JAVA draait.

Probeer JAVA te installeren en voer de pyspark-statements uit.
Het zal werken


Antwoord 29

Had hetzelfde probleem toen ik probeerde de pyspark-taak uit te voeren die werd geactiveerd vanuit de Airflow met externe spark.driver.host. De oorzaak van het probleem in mijn geval was:

Uitzondering: Java-gatewayproces is afgesloten voordat het stuurprogramma zijn . heeft verzonden
poortnummer

Uitzondering in thread “main” java.lang.Exception: bij het uitvoeren van master ‘yarn’ moet HADOOP_CONF_DIR of YARN_CONF_DIR in de omgeving worden ingesteld.

Opgelost door exports toe te voegen:

export HADOOP_CONF_DIR=/etc/hadoop/conf

En dezelfde omgevingsvariabele toegevoegd in het pyspark-script:

import os
os.environ["HADOOP_CONF_DIR"] = '/etc/hadoop/conf'

Other episodes