我正试图在macbook air上运行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 gateway process exited before sending the driver its port number?
但问题从未得到解答 . 请帮忙!谢谢 .
19 回答
这应该对你有帮助
一种解决方案是将pyspark-shell添加到shell环境变量PYSPARK_SUBMIT_ARGS中:
python / pyspark / java_gateway.py有一个变化,如果用户设置了PYSPARK_SUBMIT_ARGS变量,则需要PYSPARK_SUBMIT_ARGS包含pyspark-shell .
一个可能的原因是没有设置JAVA_HOME,因为没有安装java .
我遇到了同样的问题 . 它说
在
sc = pyspark.SparkConf()
. 我通过跑步解决了它来自https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-16-04
我的iphython笔记本(IPython 3.2.1)在Linux(ubuntu)上遇到了同样的问题 .
在我的案例中缺少的是在$ PYSPARK_SUBMIT_ARGS环境中设置主URL(假设您使用bash):
例如
您可以将其放入.bashrc文件中 . 您在spark主服务器的日志中获得了正确的URL(使用/sbin/start_master.sh启动主服务器时会报告此日志的位置) .
花了几个小时尝试了许多不同的解决方案后,我可以确认Java 10 SDK会导致此错误 . 在Mac上,请导航到/ Library / Java / JavaVirtualMachines然后运行此命令以完全卸载Java JDK 10:
之后,请下载JDK 8,然后问题就解决了 .
即使我正确地设置了
PYSPARK_SUBMIT_ARGS
,我也得到了相同的Java gateway process exited......port number
异常 . 我正在运行Spark 1.6并试图让pyspark与IPython4 / Jupyter(OS:ubuntu作为VM guest)一起工作 .当我遇到这个异常时,我注意到生成了一个hs_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
例外消失了,一切都很顺利 .当我尝试使用CSV支持启动IPython并出现语法错误时,我在Cloudera VM中得到了相同的
Exception: Java gateway process exited before sending the driver its port number
: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
将不会 .
区别在于最后一个(工作)示例中的最后一个 colon ,将 Scala version number 从 package version number 中分离出来 .
在我的情况下,此错误来自之前正常运行的脚本 . 所以我发现这可能是由于我的JAVA更新 . 在我使用java 1.8之前,我不小心更新了java 1.9 . 当我切换回java 1.8时,错误消失了,一切运行正常 . 对于那些因为同样的原因而得到此错误但又不知道如何在ubuntu上切换回旧版本java的人:运行
并选择java版本
有同样的问题,安装java使用下面的行解决了问题!
我想出了Windows系统中的问题 . Java的安装目录不能在路径中包含空格,例如
C:\Program Files
. 我在C\Java
重新安装了Java . 我将JAVA_HOME
设置为C:\Java
,问题就消失了 .如果在Ubuntu上运行pyspark这个错误消息,请通过安装
openjdk-8-jdk
包来摆脱它安装Open JDK 8:
我在pycharm中运行pyspark时遇到同样的错误 . 我通过在pycharm的环境变量中添加JAVA_HOME解决了这个问题 .
我收到此错误是因为我的磁盘空间不足 .
我有同样的例外:安装java jdk为我工作 .
工作了几个小时 . 我的问题是Java 10安装 . 我卸载它并安装了Java 8,现在Pyspark正常工作 .
我有同样的错误 .
我的麻烦射击程序是:
查看Spark源代码 .
请按照错误消息进行操作 . 在我的情况下:
pyspark/java_gateway.py
,第93行,在launch_gateway
.检查代码逻辑以找到根本原因然后您将解决它 .
在我的情况下,问题是PySpark没有权限创建一些临时目录,所以我只用sudo运行我的IDE
对我来说,答案是在'文件' - >'项目结构' - >'模块'(在IntelliJ中)中添加两个“内容根”:
YourPath \ spark-2.2.1-bin-hadoop2.7 \ python
YourPath \火花2.2.1彬hadoop2.7 \ python的\ 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解释器都驻留在没有空格的目录中 . 这些是我的问题的原因 .
如果您尝试在没有hadoop二进制文件的情况下运行spark,则可能会遇到上述错误 . 一种解决方案是:
1)分开下载hadoop .
2)在你的PATH中加入hadoop
3)将hadoop classpath添加到SPARK安装中
前两个步骤是微不足道的,最后一步可以通过在每个spark节点(master和workers)中的$ SPARK_HOME / conf / spark-env.sh中添加以下内容来做到最好
欲了解更多信息,请查看:https://spark.apache.org/docs/latest/hadoop-provided.html