25

我是 Spark 的新手,我正在尝试通过参考以下站点来安装 PySpark。

http://ramhiser.com/2015/02/01/configuring-ipython-notebook-support-for-pyspark/

我尝试安装预构建的包以及通过 SBT 构建 Spark 包。

当我尝试在 IPython Notebook 中运行 python 代码时,出现以下错误。

    NameError                                 Traceback (most recent call last)
   <ipython-input-1-f7aa330f6984> in <module>()
      1 # Check that Spark is working
----> 2 largeRange = sc.parallelize(xrange(100000))
      3 reduceTest = largeRange.reduce(lambda a, b: a + b)
      4 filterReduceTest = largeRange.filter(lambda x: x % 7 == 0).sum()
      5 

      NameError: name 'sc' is not defined

在命令窗口中,我可以看到以下错误。

<strong>Failed to find Spark assembly JAR.</strong>
<strong>You need to build Spark before running this program.</strong>

请注意,当我执行spark-shell命令时,我得到了一个 scala 提示

更新:

在朋友的帮助下,我可以通过更正 .ipython/profile_pyspark/startup/00-pyspark-setup.py 文件的内容来解决与 Spark 程序集 JAR 相关的问题

我现在只有 Spark Context 变量的问题。更改标题以适当反映我当前的问题。

4

13 回答 13

50

在路径中有 pyspark 后,您需要执行以下操作:

from pyspark import SparkContext
sc =SparkContext()
于 2015-06-12T00:08:20.473 回答
13

一种解决方案是添加pyspark-shell到 shell 环境变量 PYSPARK_SUBMIT_ARGS:

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

python/pyspark/java_gateway.py有一个变化,pyspark-shell如果用户设置了 PYSPARK_SUBMIT_ARGS 变量,则需要 PYSPARK_SUBMIT_ARGS 包括在内。

于 2015-07-22T15:20:08.720 回答
12

您必须创建 SparkContext 的实例,如下所示:

进口:

from pyspark import SparkContext

接着:

sc =SparkContext.getOrCreate()

注意:sc =SparkContext.getOrCreate()效果比sc =SparkContext().

于 2017-11-15T14:33:19.837 回答
5

只是一点点改进。在您的 python 脚本文件顶部添加以下内容。

#! /bin/python
from pyspark import SparkContext, SparkConf
sc =SparkContext()

# your code starts here
于 2016-08-09T09:16:19.187 回答
4

这在 spark 版本 2.3.1 中对我有用

from pyspark import SparkContext
sc = SparkContext()
于 2018-06-19T12:47:30.693 回答
2

我添加了 Venu 提供的以下几行。

from pyspark import SparkContext
sc =SparkContext()

然后通过删除环境变量 PYSPARK_SUBMIT_ARGS 解决了以下后续错误。

C:\Spark\spark-1.3.1-bin-hadoop2.6\python\pyspark\java_gateway.pyc in launch_gateway() 77 callback_socket.close() 78 if gateway_port is None: 
---> 79 raise Exception("Java gateway process exited before sending the driver its port number") 
80 
81 # In Windows, ensure the Java child processes do not linger after Python has exited. Exception: Java gateway process exited before sending the driver its port number
于 2015-06-15T17:11:17.803 回答
2

我也遇到了Java gateway process exited before sending the driver its port number错误信息。

我可以通过下载为 Hadoop 预构建的版本之一来解决这个问题(我使用了用于 hadoop 2.4 的版本)。由于我不使用 Hadoop,我不知道为什么这会改变一些东西,但它现在对我来说完美无缺......

于 2015-06-23T08:44:32.603 回答
2

我在尝试通过 PyCharm 让 pySpark 工作时遇到了类似的错误,我在日志中注意到,就在这个错误之前,我收到了这个错误:

环境:未找到

我将此追溯到我没有设置 Java 主环境变量的事实。所以我添加了 os.environ['JAVA_HOME'] = "/usr/java/jdk1.7.0_67-cloudera"

到我的脚本(我知道这可能不是最好的地方)并且错误发生了,我创建了我的 spark 对象

于 2016-04-06T07:11:52.643 回答
1

在使用 IBM Watson Studio Jupyter notebook 时,我遇到了类似的问题,我通过以下方法解决了它,

!pip install pyspark
from pyspark import SparkContext
sc = SparkContext()
于 2020-07-06T11:49:53.457 回答
1

我的 Mac 上的 Spark 是 1.6.0,所以添加pyspark-shell并没有解决问题。对我有用的是遵循@karenyng在这里给出的答案

pyspark_submit_args = os.environ.get("PYSPARK_SUBMIT_ARGS", "")
if not "pyspark-shell" in pyspark_submit_args: pyspark_submit_args += " pyspark-shell"
os.environ["PYSPARK_SUBMIT_ARGS"] = pyspark_submit_args
于 2016-02-18T08:26:56.843 回答
0

这个脚本对我有用(在 linux 中):

#!/bin/bash

export PYSPARK_DRIVER_PYTHON=ipython
export PYSPARK_DRIVER_PYTHON_OPTS="--pylab -c 'from pyspark import SparkContext; sc=SparkContext()' -i"
export PYSPARK_SUBMIT_ARGS="--master local[2] pyspark-shell"

pyspark

pyspark在我打电话的时候打电话,我假设“spark/bin”安装路径在PATH变量中。如果没有,请改为调用/path/to/spark/bin/pyspark

于 2017-01-27T17:22:36.480 回答
0

在我的情况下,我遇到了同样的问题,问题是另一个笔记本正在运行(在最近的版本中,它们以绿色显示)。我选择并关闭了其中一个,它运行良好。

很抱歉调用旧线程,但它可能会帮助某人:)

于 2015-07-28T17:49:29.787 回答
0

例外情况:Java 网关进程在向驱动程序发送其端口号之前已退出

您需要在您的计算机上安装 Java8。

于 2021-02-21T17:35:44.047 回答