未定义火花上下文"sc"



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

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

我尝试安装预构建的软件包,并通过 SBT 构建 Spark 软件包。

当我尝试在IPython笔记本中运行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上下文变量的问题。更改标题以适当地反映我当前的问题。

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

from pyspark import SparkContext
sc =SparkContext()

你必须像下面这样创建SparkContext的实例:

进口:

from pyspark import SparkContext

然后:

sc =SparkContext.getOrCreate()

注意:sc =SparkContext.getOrCreate()sc =SparkContext()好用。

一种解决方案是将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

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

#! /bin/python
from pyspark import SparkContext, SparkConf
sc =SparkContext()
# your code starts here

这在 Spark 版本 2.3.1 中对我有用

from pyspark import SparkContext
sc = SparkContext()

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

from pyspark import SparkContext
sc =SparkContext()

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

C:Sparkspark-1.3.1-bin-hadoop2.6pythonpysparkjava_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

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

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

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

环境:未找到

我将其追溯到我没有设置Java家庭环境变量的事实。os.environ['JAVA_HOME'] = "/usr/java/jdk1.7.0_67-cloudera"

到我的脚本(我知道这可能不是最好的地方)错误消失了,我创建了我的火花对象

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

在IBM Watson Studio Jupyter笔记本上工作时,我遇到了类似的问题,我通过以下方法解决了它,

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

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

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

这个脚本对我有用(在 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

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

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

最新更新