我想在我的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网关进程在向驱动程序发送端口号之前退出了吗?
但这个问题一直没有答案。请帮帮我!谢谢。
26条答案
按热度按时间tkqqtvp116#
在这上面工作了好几个小时。我的问题是Java10的安装。我卸载了它并安装了java8,现在pyspark可以工作了。
5w9g7ksd17#
确保java目录(如路径中所示)和python解释器都位于没有空格的目录中。这就是我问题的原因。
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
再一次。那就行了。
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”
现在。真管用!
gwbalxhn20#
如果您试图在没有hadoop二进制文件的情况下运行spark,可能会遇到上述错误。一种解决方案是:
1) 单独下载hadoop。
2) 将hadoop添加到您的路径
3) 将hadoop类路径添加到spark安装中
前两步很简单,最后一步最好在每个spark节点(master和worker)的$spark_home/conf/spark-env.sh中添加以下内容
有关更多信息,请查看:https://spark.apache.org/docs/latest/hadoop-provided.html
bakd9h0s21#
我在pycharm中运行pyspark也有同样的错误。我通过在pycharm的环境变量中添加javahome解决了这个问题。
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:.bashrcm528fe3b23#
对我来说,是因为我写了
SPARK_DRIVER_MEMORY=10
而不是SPARK_DRIVER_MEMORY=10g
在spark-env.sh
0sgqnhkj24#
在我的例子中,这个错误出现在以前运行良好的脚本中。所以我想这可能是因为我的java更新。在使用Java1.8之前,我不小心更新到了Java1.9。当我切换回Java1.8时,错误消失了,一切正常。对于那些因为同样的原因出现这个错误但不知道如何在ubuntu上切换回旧版本java的人:run
选择java版本
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
dzhpxtsq26#
我得到这个错误是因为我的磁盘空间不足。