Pyspark: 예외: Java 게이트웨이 프로세스가 종료된 후 드라이버에 포트 번호를 전송합니다.
맥북에서 pyspark를 실행하려고 합니다.기동하려고 하면, 다음의 에러가 표시됩니다.
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 게이트웨이 프로세스가 종료된 후 드라이버에 포트 번호를 전송합니까?
하지만 그 질문에 대한 해답은 아직 나오지 않았다.도와주세요!감사해요.
생각할 수 있는 이유 중 하나는 JAVA_입니다.Java가 설치되지 않았기 때문에 HOME이 설정되지 않았습니다.
같은 문제가 발생했습니다.라고 쓰여 있다
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 에서 입수했습니다.
이게 도움이 될 거야
하나의 솔루션은 쉘 환경 변수 PYSPARK_SUBMIT_ARGS에 pyspark-shell을 추가하는 것입니다.
export PYSPARK_SUBMIT_ARGS="--master local[2] pyspark-shell"
python/pyspark/java_gateway.py가 변경되었습니다.PYSPARK_SUBMIT_ARGS 변수가 사용자에 의해 설정되어 있는 경우 PYSPARK_SUBMIT_ARGS에 pyspark-shell이 포함되어 있어야 합니다.
를 실행하고 있는 이가 있는 Ubuntu pyspark를 하였습니다.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
MacOS의 경우
Mac OS에서도 마찬가지로 터미널을 입력했습니다.
$ java -version
No Java runtime present, requesting install.
Oracle 다운로드 사이트에서 Java를 설치하라는 메시지가 표시되면 MacOS 설치 프로그램을 선택하고jdk-13.0.2_osx-x64_bin.dmg 후 했습니다.
$ java -version
java version "13.0.2" 2020-01-14
편집 JDK 8 을 인스톨 하려면 , https://www.oracle.com/java/technologies/javase-jdk8-downloads.html 에 액세스 할 필요가 있습니다(필요한 경우).
그 후 pyspark와 Spark 컨텍스트를 시작할 수 있었습니다.
동작 여부 확인
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]
설정도 할 수 .PYSPARK_PYTHON ★★★★★★★★★★★★★★★★★」PYSPARK_DRIVER_PYTHONpyspark(Python) Python(IPython) Python(Python) Python.
Mac OS를 사용하고 있습니다.문제를 해결했어요!
아래는 제가 고친 방법입니다.
JDK8은 정상적으로 동작하고 있는 것 같다.(https://github.com/jupyter/jupyter/issues/248)
JDK/Library/Java/JavaVirtual Machines를 확인했는데 이 경로에는 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)"
~/.prefile_profile 파일로 이동합니다.(jdk1.8 파일명을 확인합니다)
이제 됐다!이것이 도움이 되기를 바랍니다:)
나중에 참고할 수 있도록 문제를 해결한 방법을 여기에 다시 게시하겠습니다.
비슷한 문제를 해결한 방법
전제 조건:
- 이미 설치된 아나콘다
- Spark는 이미 설치되어 있습니다(https://spark.apache.org/downloads.html)
- pyspark는 이미 설치되어 있습니다(https://anaconda.org/conda-forge/pyspark)
실행한 순서(메모: 시스템에 따라 폴더 경로를 설정)
- 다음과 같은 환경 변수를 설정합니다.
- SPARK_HOME에서 'C:\spark\spark-3.0.1-bin-hadoop2'로 이동합니다.7'
- HADOP_HOME을 'C:\spark\spark-3.0.1-bin-hadoop2'로 설정합니다.7'
- PYSPARK_DRIVER_PYthon을 'jupyter'로 설정합니다.
- PYSPARK_DRIVER_PYthon_OPTS를 '노트북'으로 설정합니다.
- 'C:\spark\spark-3.0.1-bin-hadoop2.7\bin;'을 PATH 시스템 변수에 추가합니다.
- C: 바로 아래에 설치된 Java 폴더를 변경합니다(이전에는 Java가 Program files 아래에 설치되어 있었기 때문에 C: 바로 아래에 다시 설치했습니다).
- 그래서 JAVA_HOME은 'C:\java\jdk1.8.0_271'과 같이 됩니다.
이제. 작동한다!
Linux(ubuntu)의 iphython 노트북(IPython 3.2.1)에서도 같은 문제가 발생.
이 경우 $PYSPARK_SUBMIT_ARGS 환경에서 마스터 URL을 다음과 같이 설정하지 못했습니다(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로 마스터를 시작하면 보고됩니다).
몇 시간이고 여러 가지 솔루션을 사용해 본 결과, Java 10 SDK가 이 에러의 원인이 되고 있는 것을 확인할 수 있었습니다.Mac에서는 /Library/Java/JavaVirtual Machines로 이동한 후 다음 명령을 실행하여 Java JDK 10을 완전히 제거하십시오.
sudo rm -rf jdk-10.jdk/
그 후 JDK 8을 다운로드하여 문제가 해결됩니다.
하여 JAVA_PySpark 설정 JAVA_PySpark 설정입니다.HOME에서 Java 11로 동작했습니다(원래는 16으로 설정되어 있었습니다).MacOS ch PyCharm mac mac 。하려면 Java를 선택합니다.echo $JAVA_HOME.
아래는 나에게 효과가 있었던 것이다.Mac에서는 다음 homebrew 명령을 사용했지만 OS에 따라 다른 방법으로 원하는 Java 버전을 설치할 수 있습니다.
# 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
를 사용하여 했을 때 할 할 수 .$ brew --prefix openjdk@11예요./usr/local/opt/openjdk@11
이 시점에서 단말기에서 PySpark 프로그램을 실행할 수 있었습니다.그러나 JAVA_를 글로벌하게 변경할 때까지 IDE(PyCharm)는 여전히 같은 에러가 발생했습니다.HOME 변수
셸을 을 사용하고 있는지 합니다.zsh 은 zsh를 실행하고 있습니다.echo $SHELL커맨드 라인에 표시됩니다.zsh를 합니다.~/.zshenv 및 "를 편집합니다.~/.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
이 단계를 거치면 PyCharm IDE를 통해서도 PySpark를 실행할 수 있습니다.
자바어1. AdapeOpenJava 1.8(AdapeOpen)의 사용을 합니다.JDK 8 j j j j j j j j j j ) 。, 「」를 합니다.JAVA_HOMEMac/Linux를 bash 변수를 합니다.
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
export PATH=$JAVA_HOME/bin:$PATH
는 같은 것을 .Java gateway process exited......port numberPYSPARK_SUBMIT_ARGS 게스트로서 )와 연동하려고 .Spark 1.6 sparkysys 、 pyspark 、 IPython4 / Jupyter ( OS : VM の ubuntu ) 。
이 예외가 발생하는 동안 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.
Virtual Box Setting(가상 박스 설정) ubuntu(우분투) 。 이 ★★★★★★★★★★★★★★★.Java gateway을 사용하다
는 같은 것을 .Exception: Java gateway process exited before sending the driver its port numberCSV IPython:
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 버전 번호와 패키지 버전 번호를 구분하는 것입니다.
제 경우, 이 에러는 이전에 정상적으로 동작하고 있던 스크립트에서 발생했습니다.JAVA 업데이트 때문일 수 있습니다.java 1.8을 사용하기 전에 실수로 java 1.9로 업데이트했습니다.java 1.8로 다시 바꾸자 에러가 사라지고 모든 것이 정상적으로 동작하고 있습니다.같은 이유로 이 오류가 발생하지만 ubuntu에서 이전 Java 버전으로 전환하는 방법을 모르는 경우: run
sudo update-alternatives --config java
자바 버전을 선택합니다.
이치노 설치 등의 .C:\Program FilesC\JavaJAVA_HOME로로 합니다.C:\Java문제는 사라졌습니다.
hadoop 바이너리 없이 spark를 실행하려고 하면 위에서 언급한 오류가 발생할 수 있습니다.한 가지 해결책은 다음과 같습니다.
Hadoop을하십시오.1) Hadoop을
2) PATH † Hadoop »
SPARK 에 하둡 경로 3) SPARK 설치
처음 2단계는 간단한 절차입니다.마지막 단계는 각 스파크 노드(마스터 및 워커)의 $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 를 참조해 주세요.
오랜 시간을 들여서 이 문제를 해결할 수 있었습니다.저는 아나콘다 환경에서 파이캄을 연구하고 있는 MacOs Catalina를 소유하고 있습니다.
스파크는 현재 Java8만을 지원합니다.명령줄에서 Java를 설치하면 기본적으로 최신 Java10+가 설치되고 모든 문제가 발생합니다.이 문제를 해결하려면 다음 단계를 따르십시오.
1. Make sure you have Homebrew, else install Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2. Install X-code
xcode-select –-install
3. Install Java8 through the official website (not through terminal)
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
4. Install Apache-Spark
brew install apache-spark
5. Install Pyspark and Findspark (if you have anaconda)
conda install -c conda-forge findspark
conda install -c conda-forge/label/gcc7 findspark
conda install -c conda-forge pyspark
Viola! 이것으로 문제없이 PySpark를 실행할 수 있습니다.
디스크 용량이 부족하여 이 오류가 발생했습니다.
같은 문제가 발생했는데, 아래 행을 사용하여 Java를 설치한 후 문제가 해결되었습니다!
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
같은 에러가 발생하고 있습니다.
트러블 슈팅 절차는 다음과 같습니다.
- 스파크 소스 코드를 확인합니다.
- 에러 메시지를 따릅니다.: ★★★★★★★★★★★★★★★★★★:
pyspark/java_gateway.py의, ,9393 ( )launch_gateway. - 코드 로직을 체크하고 근본 원인을 찾아 해결합니다.
내 경우 PySpark에 임시 디렉토리를 만들 수 있는 권한이 없기 때문에 sudo로 IDE를 실행하면 됩니다.
pycharm에서 pyspark를 실행할 때 동일한 오류가 발생합니다.JAVA_를 추가하여 문제를 해결했습니다.PYcharm의 환경변수에 있는 HOME.
저도 같은 예외가 있어서 모든 환경변수를 설정 및 리셋하여 모든 것을 시도했습니다.그러나 결국 이슈는 스파크 세션의 앱네임 속성인 "SparkSession"에서 우주로 드릴다운되었습니다.builder.appName("StreamingDemo").getOrCreate().appname 속성에 지정된 문자열에서 공간을 제거한 후 바로 해결되었습니다.윈도우 10 환경에서 일식이 있는 pyspark 2.7을 사용하고 있었습니다.그것은 나에게 효과가 있었다.필요한 스크린샷을
동봉합니다.
JAVA_를 사용하는 Linux(Ubuntu 18.04)의 경우HOME의 문제, 중요한 것은 마스터 폴더를 가리키는 것입니다.
- Java 8 을 디폴트로 by: 로 설정합니다.Jave 8 이 인스톨 되어 있지 않은 경우는 by: 로 인스톨 합니다.
- ★★
JAVA_HOME마스터 Java 8 폴더로 환경변수를 지정합니다.위치는 위의 첫 번째 명령어로 지정됩니다.jre/bin/java즉, 명령줄에서 수행될 경우 현재 세션(리눅스에서는 ref: export 명령)에만 적용됩니다.확인하는 방법: - 이것을 영속적으로 설정하려면 , IDE/Jupyter/python 인터프리터를 기동하기 전에 실행중의 파일에 굵은 글씨로 된 행을 추가합니다.이것은 위의 굵은 글씨 행을 에 추가하는 것으로 생각할 수 있습니다.이 파일은 대화식으로 참조를 시작할 때 로드됩니다. .bashrc
JAVA가 머신에 설치되어 있지 않기 때문에 에러가 발생했습니다.스파크는 보통 JAVA에서 실행되는 스칼라로 개발됩니다.
JAVA를 설치하고 pyspark 문을 실행합니다.잘 될 거야
이 문제는 보통 컴퓨터에 Java가 설치되어 있지 않은 경우에 발생합니다.
"java" 라고 입력합니다.★★★★java -version
이런 출력물이 나올 것이다.
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)
그렇지 않으면 orcale로 이동하여 jdk를 다운로드합니다.Java를 다운로드하여 빌드 경로에 추가하는 방법에 대한 이 비디오를 확인하십시오.
https://www.youtube.com/watch?v=f7rT0h1Q5Wo
순서: 1
터미널에서 Java verion을 확인합니다.
java -version
「 」가 되어 는,bash: java: command not found가, 스가가가가가가가가가가가가가가가가가가가.
순서: 2
다음 명령을 사용하여 Java를 설치합니다.
sudo apt-get install default-jdk
순서: 3
Java 버전을 확인할 수 없습니다. 다운로드된 버전을 볼 수 있습니다.
java -version
결과:
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)
순서: 4
이제 pyspark 코드를 실행하면 이러한 오류를 볼 수 없습니다.
여기에는 많은 유용한 힌트가 있지만, 어느 것도 제 문제를 완전히 해결하지 못했기 때문에 Windows에서 Anaconda Jupyter 노트북에서 작업한 절차를 보여 드리겠습니다.
- 공백이 없는 디렉토리에 Java 및 pyspark를 다운로드하여 설치합니다.
- 할 수도] 필]]]] ]라고 입력합니다
where conda★★★★★★★★★★★★★★★★★」where pythonWindows 환경 변수 도구를 사용하여 .exe 파일의 디렉터리 경로를 경로 변수에 추가합니다.도 추가해 .JAVA_HOME★★★★★★★★★★★★★★★★★」SPARK_HOME거기에 대응하는 경로와 함께요 - 이 경우에도 노트북에서 수동으로 변수를 설정해야 했습니다.
PYSPARK_SUBMIT_ARGS하다)SPARK_HOME★★★★★★★★★★★★★★★★★」JAVA_HOME
import os
os.environ["SPARK_HOME"] = r"C:\Spark\spark-3.2.0-bin-hadoop3.2"
os.environ["PYSPARK_SUBMIT_ARGS"] = "--master local[3] pyspark-shell"
os.environ["JAVA_HOME"] = r"C:\Java\jre1.8.0_311"
합니다.
!pip install findspark.실행합니다.
import findspark★★★★★★★★★★★★★★★★★」findspark.init()실행합니다.
from pyspark.sql import SparkSession★★★★★★★★★★★★★★★★★」spark = SparkSession.builder.getOrCreate()
유용한 링크:
https://towardsdatascience.com/installing-apache-pyspark-on-windows-10-f5f0c506bea1
https://www.datacamp.com/community/tutorials/installing-anaconda-windows
이 문제는 JAVE에 의한 것이 아닙니다.홈 설정당신은 창을 사용하고 있고 아나콘다를 파이톤 도구로 사용하고 있을 겁니다.명령 프롬프트를 사용할 수 있는지 확인하십시오.cmd의 크래시로 인해 스파크를 실행할 수 없습니다.이 문제를 해결하면 PC에서 스파크가 잘 작동합니다.
몇 시간이나 걸렸어요문제는 자바10 설치였습니다.언인스톨 하고 자바8을 인스톨 했더니, Pyspark가 동작합니다.
저는 '파일' -> '프로젝트 구조' -> '모듈' (IntelliJ)에 2개의 '콘텐츠 루트'를 추가하는 것이 답이었습니다.
- yourPath\spark-2.2.1-bin-hadoop2.7\controll.
- yourPath\spark-2.2.1-bin-hadoop2.7\cisco\lib\py4j-0.10.4-src.zip
오래된 스레드이지만 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
그럼 효과가 있겠군
Java 디렉토리(경로에 있음)와 Python 인터프리터가 공백이 없는 디렉토리에 있는지 확인합니다.이것들이 내 문제의 원인이었다.
언급URL : https://stackoverflow.com/questions/31841509/pyspark-exception-java-gateway-process-exited-before-sending-the-driver-its-po
'programing' 카테고리의 다른 글
| JAVA_의 설정 방법Mac OS X 10.9의 홈 환경 변수 (0) | 2023.01.26 |
|---|---|
| 판다의 복잡한 기준으로 선정.데이터 프레임 (0) | 2023.01.26 |
| 설치된 PHP가 스레드세이프인지 스레드세이프인지 비스레드세이프인지 알아보시겠습니까? (0) | 2023.01.26 |
| 콘다는 어떻게 운영하나요? (0) | 2023.01.26 |
| 퍼블릭, 프라이빗 및 프로텍트의 차이점은 무엇입니까? (0) | 2023.01.26 |
