Spark上下文'sc'未定义

时间:2015-06-10 18:03:12

标签: ipython-notebook pyspark

我是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变量的问题。更改标题以适当反映我当前的问题。

13 个答案:

答案 0 :(得分:31)

在路径中使用pyspark后需要执行以下操作:

from pyspark import SparkContext
sc =SparkContext()

答案 1 :(得分:12)

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

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

python/pyspark/java_gateway.py 发生了变化,如果用户设置了PYSPARK_SUBMIT_ARGS变量,则需要PYSPARK_SUBMIT_ARGS包含pyspark-shell

答案 2 :(得分:9)

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

导入:

from pyspark import SparkContext

然后:

sc =SparkContext.getOrCreate()

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

答案 3 :(得分:5)

稍微改善一点。在python脚本文件的顶部添加以下内容。

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

# your code starts here

答案 4 :(得分:4)

这在Spark版本2.3.1中对我有用

SELECT * 
FROM customers 
WHERE SUBSTRING(UPPER(name), 2, 1) = 'A'

答案 5 :(得分: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

答案 6 :(得分:2)

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

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

答案 7 :(得分:2)

我在尝试通过PyCharm运行pySpark时遇到了类似的错误,我注意到在日志中,就在此错误之前我收到了此错误:

环境:未找到

我追溯到我没有Java家庭环境变量集的事实..所以我补充说 os.environ ['JAVA_HOME'] =“/usr/java/jdk1.7.0_67-cloudera”

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

答案 8 :(得分:1)

我的Mac上的Spark是1.6.0,因此添加pyspark-shell并没有解决问题。 对我有用的是遵循@karenyng给出的答案here

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

答案 9 :(得分:1)

在使用IBM Watson Studio Jupyter笔记本电脑时,我遇到了类似的问题,我通过以下方法解决了该问题,

!pip install pyspark
from pyspark import SparkContext
sc = SparkContext()

答案 10 :(得分:0)

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

很抱歉调用旧帖子但它可能对某人有帮助:)

答案 11 :(得分: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

答案 12 :(得分:0)

异常:Java 网关进程在向驱动程序发送其端口号之前退出

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