【问题标题】:Pyspark (SparkContext): java gateway process exited before sending the driver its port number [duplicate]Pyspark(SparkContext):Java网关进程在向驱动程序发送其端口号之前退出[重复]
【发布时间】:2018-09-12 12:27:33
【问题描述】:

我已经为这个问题苦苦挣扎了四天,即使在 Stackoverflow 中,我也查看了几个处理相同问题的网页,但没有找到解决方案。

我安装了 Spark-2.3.0 、Scala 2.12.5 和 Hadoop-2.7.1(用于 winutils master),然后设置了相应的环境变量。我安装了 findspark,然后在我的 Jupyter Notebook 中启动了 pyspark。问题是当我运行时:

sc = pyspark.SparkContext('local')

我收到以下错误:

java gateway process exited before sending the driver its port number

我应该提到我正在使用 Java-1.8.0 并且我在我的环境变量中进行了设置:

 PYSPARK_SUBMIT_ARGS="--master local[2] pyspark-shell"

如果您知道如何解决此问题,我将不胜感激。谢谢!

【问题讨论】:

  • 您是否尝试使用此行 sc = pyspark.SparkContext('local') 创建新的火花上下文?而这一切仅仅是为了在 jupyter 中运行 spark 吗?
  • 是的,我想创建一个 spark 上下文以便使用 pyspark 进行开发。

标签: apache-spark pyspark jupyter-notebook


【解决方案1】:

设置相当简单明了。以下是您可以遵循的步骤。

假设:

  • 您已下载 Spark 并将其存档解压缩到 <spark_home>,将 <spark_home>/bin 目录添加到 PATH 变量中
  • 您已经安装了 Jupyter,可以在命令行使用 jupyter notebook 启动它

要遵循的步骤:

导出这两个变量。这最好在您的用户配置文件脚本中完成

export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'

要打开jupyter,只需调用

pyspark

如果你有额外的选项,比如master,你可以把它们传递给pyspark

pyspark --master local[2]

当笔记本打开时,spark context 已经初始化(如sc),并且spark session 也已初始化(如spark),您应该能够看到如下内容:

【讨论】:

  • 非常感谢您的回答。事实上,当我直接通过 Anaconda 导航器连接到我的 jupyter 笔记本时,我得到了错误,换句话说,我没有通过调用 pyspark 访问 jupyter 笔记本。当我通过调用 pyspark 调用 jupyter 笔记本时,我不再收到错误,并且得到与您相同的结果。
  • 在这种情况下,我有点困惑,因为通过这两种不同的方式调用 jupyter notebook 会使两个 notebook 在内容方面完全不同。请您向我解释一下我可以在 pyspark 中开发哪些?
  • 我更喜欢这种方式,因为它可以最大限度地减少设置工作量。 PySpark 负责为您导出路径。事实上,我什至通过这种方法设法在pydev 中使用了pyspark。它不是侵入性的,并且您的 jupyter 和 spark 安装都保持干净(要运行原始 pyspark shell,您需要做的就是删除这两个环境变量......)
  • 非常感谢您的澄清!
猜你喜欢
  • 2015-10-28
  • 2017-07-15
  • 2015-10-27
  • 1970-01-01
  • 1970-01-01
  • 2019-06-08
  • 2021-09-15
相关资源
最近更新 更多