pyspark:异常:java网关进程在向驱动程序发送端口号之前退出

z3yyvxxp  于 2021-07-09  发布在  Spark
关注(0)|答案(26)|浏览(923)

我想在我的MacBookAir上运行Pypark。当我试着启动它时,我得到一个错误:

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网关进程在向驱动程序发送端口号之前退出了吗?
但这个问题一直没有答案。请帮帮我!谢谢。

tkqqtvp1

tkqqtvp116#

在这上面工作了好几个小时。我的问题是Java10的安装。我卸载了它并安装了java8,现在pyspark可以工作了。

5w9g7ksd

5w9g7ksd17#

确保java目录(如路径中所示)和python解释器都位于没有空格的目录中。这就是我问题的原因。

ezykj2lf

ezykj2lf18#

这是一个老线程,但我添加了我的解决方案,为那些谁使用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 再一次。
那就行了。

67up9zun

67up9zun19#

我将在这里转述我是如何解决的,只是为了将来的参考。
我是如何解决类似的问题的
先决条件:
anaconda已经安装
spark已安装(https://spark.apache.org/downloads.html)
Pypark已安装(https://anaconda.org/conda-forge/pyspark)
步骤(注意:根据您的系统设置文件夹路径)
设置以下环境变量。
spark\u“c:\spark\spark-3.0.1-bin-hadoop2.7”的主页
将hadoop\u home设置为“c:\spark\spark-3.0.1-bin-hadoop2.7”
将pyspark\u driver\u python设置为“jupyter”
将pyspark\u driver\u python\u opts设置为“notebook”
添加“c:\spark\spark-3.0.1-bin-hadoop2.7\bin;”到path系统变量。
更改c下的java installed文件夹:(以前java是在ProgramFiles下安装的,所以我直接在c下重新安装:)
所以我的java\u主页将变成这样的“c:\java\jdk1.8.0\u271”
现在。真管用!

gwbalxhn

gwbalxhn20#

如果您试图在没有hadoop二进制文件的情况下运行spark,可能会遇到上述错误。一种解决方案是:
1) 单独下载hadoop。
2) 将hadoop添加到您的路径
3) 将hadoop类路径添加到spark安装中
前两步很简单,最后一步最好在每个spark节点(master和worker)的$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

bakd9h0s

bakd9h0s21#

我在pycharm中运行pyspark也有同样的错误。我通过在pycharm的环境变量中添加javahome解决了这个问题。

dgenwo3n

dgenwo3n22#

对于linux(Ubuntu18.04)的java\主页问题,关键是将其指向主文件夹:
将java 8设置为默认值: sudo update-alternatives --config java . 如果未安装jave 8,请通过以下方式安装: sudo apt install openjdk-8-jdk .
JAVA_HOME 环境变量作为主Java8文件夹。位置由上面的第一个命令给出 jre/bin/java . 即: export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/" . 如果在命令行上完成,这将只与当前会话相关(参考:linux上的export命令)。要验证: echo $JAVA_HOME .
为了永久地设置这个值,请在启动ide/jupyter/python解释器之前将上面的粗体行添加到运行的文件中。这可以通过将上面粗体的行添加到 .bashrc . 当以交互方式启动bash时加载此文件ref:.bashrc

m528fe3b

m528fe3b23#

对我来说,是因为我写了 SPARK_DRIVER_MEMORY=10 而不是 SPARK_DRIVER_MEMORY=10gspark-env.sh

0sgqnhkj

0sgqnhkj24#

在我的例子中,这个错误出现在以前运行良好的脚本中。所以我想这可能是因为我的java更新。在使用Java1.8之前,我不小心更新到了Java1.9。当我切换回Java1.8时,错误消失了,一切正常。对于那些因为同样的原因出现这个错误但不知道如何在ubuntu上切换回旧版本java的人:run

sudo update-alternatives --config java

选择java版本

tyg4sfes

tyg4sfes25#

对我来说,答案是在“file”->“project structure”->“modules”(在intellij中)中添加两个“content root”:
yourpath\spark-2.2.1-bin-hadoop2.7\python
yourpath\spark-2.2.1-bin-hadoop2.7\python\lib\py4j-0.10.4-src.zip

dzhpxtsq

dzhpxtsq26#

我得到这个错误是因为我的磁盘空间不足。

相关问题