我想在我的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条答案
按热度按时间htzpubme1#
我在windows系统中解决了这个问题。java的安装目录的路径中不能有空格,例如
C:\Program Files
. 我在中重新安装了javaC\Java
. 我准备好了JAVA_HOME
至C:\Java
问题就消失了。bwntbbo32#
我的ipython笔记本(ipython3.2.1)在linux(ubuntu)上也有同样的问题。
我的例子中缺少的是在$pyspark\u submit\u args环境中设置主url,如下所示(假设您使用bash):
例如
您可以将其放入.bashrc文件中。您在spark主机的日志中获得了正确的url(当您使用/sbin/start\u master.sh启动主机时,会报告此日志的位置)。
kyvafyod3#
我也有同样的错误。
我的故障排除程序是:
查看spark源代码。
遵循错误消息。就我而言:
pyspark/java_gateway.py
,第93行,inlaunch_gateway
.检查代码逻辑以找到根本原因,然后您将解决它。
在我的例子中,问题是pyspark没有创建临时目录的权限,所以我只是用sudo运行ide
zphenhs44#
在ubuntu上运行pyspark时,通过安装
openjdk-8-jdk
包裹安装open jdk 8:
在macos上
同样在mac os上,我输入了一个终端:
我被提示从oracle的下载站点安装java,选择macos安装程序,点击
jdk-13.0.2_osx-x64_bin.dmg
然后检查java是否安装了编辑以安装您需要转到的jdk 8https://www.oracle.com/java/technologies/javase-jdk8-downloads.html (需要登录)
在那之后,我可以用pyspark创建一个spark上下文。
检查是否有效
在python中:
请注意,您可能需要设置环境变量
PYSPARK_PYTHON
以及PYSPARK_DRIVER_PYTHON
它们必须是与运行pyspark(驱动程序)所用的python(或ipython)相同的python版本。2ledvvac5#
spark对您使用的java版本非常挑剔。强烈建议您使用Java1.8(开源的OpenJDK8也很好用)。安装后,设置
JAVA_HOME
对于bash变量,如果使用mac/linux:export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
export PATH=$JAVA_HOME/bin:$PATH
xmjla07d6#
如果您的机器中没有安装java,通常会发生这种情况。
转到命令提示符并检查java:type的版本:
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并将其添加到buildpath。https://www.youtube.com/watch?v=f7rt0h1q5wo
mbjcgjjk7#
同样的问题,安装java后使用下面的行解决了问题!
ckx4rj1h8#
这应该对你有帮助
一种解决方案是将pyspark shell添加到shell环境变量pyspark\u submit\u args中:
python/pyspark/java\u gateway.py中有一个更改,如果用户设置了pyspark\u submit\u args变量,则需要pyspark\u submit\u args包含pyspark shell。
x759pob29#
在花了数小时尝试了许多不同的解决方案之后,我可以确认Java10SDK导致了这个错误。在mac上,请导航到/library/java/javavirtualmachines,然后运行此命令以完全卸载java jdk 10:
之后,请下载jdk8,问题就解决了。
62o28rlo10#
我使用mac os。我解决了这个问题!
下面是我如何修复它。
jdk8似乎工作正常(https://github.com/jupyter/jupyter/issues/248)
所以我检查了我的jdk/library/java/javavirtualmachines,这个路径中只有jdk-11.jdk。
我下载了jdk8(我按照链接)。即:
在这之后,我补充道
到~/.bash\u配置文件(您需要检查您的jdk1.8文件名)
现在可以了!希望对您有所帮助:)
0wi1tuuw11#
我也一样
Exception: Java gateway process exited before sending the driver its port number
在cloudera vm中,尝试使用csv支持启动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版本号与包版本号分开。
whlutmcx12#
一个可能的原因是没有设置javahome,因为没有安装java。
我也遇到了同样的问题。上面写着
在
sc = pyspark.SparkConf()
. 我通过跑步解决了这个问题是从哪来的https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-16-04
gev0vcfq13#
我也一样
Java gateway process exited......port number
即使我设置了PYSPARK_SUBMIT_ARGS
适当地。我正在运行spark1.6并试图让pyspark与ipython4/jupyter(os:ubuntu作为vm客户机)一起工作。当我遇到这个异常时,我注意到生成了一个hs\u err.*.log,它的开头是:
There is insufficient memory for the Java Runtime Environment to continue. Native memory allocation (malloc) failed to allocate 715849728 bytes for committing reserved memory.
因此,我通过virtualbox设置增加了为我的ubuntu分配的内存,并重新启动了guest ubuntu。那么这个呢Java gateway
例外情况消失,一切顺利。oalqel3c14#
这个错误有很多原因。我的理由是:
33qvvth115#
我也遇到了同样的异常,我通过设置和重置所有环境变量来尝试一切。但问题最终深入到了spark会话的appname属性中的空格处,即“sparksession.builder.appname(“streamingdemo”).getorcreate()”。从appname属性的字符串中删除空格后,它立即得到了解析。它对我有用。附上必需的屏幕截图。