Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 教程中出现多个SparkContext错误_Python_Apache Spark - Fatal编程技术网

Python 教程中出现多个SparkContext错误

Python 教程中出现多个SparkContext错误,python,apache-spark,Python,Apache Spark,我正在尝试运行非常基本的Spark+Python pyspark教程——请参见 当我尝试初始化新的SparkContext时 from pyspark import SparkContext sc = SparkContext("local[4]", "test") 我得到以下错误: ValueError: Cannot run multiple SparkContexts at once 我想知道我以前运行示例代码的尝试是否将未清除的内容加载到内存中。是否有办法列出内存中已存在的当前SPA

我正在尝试运行非常基本的Spark+Python pyspark教程——请参见

当我尝试初始化新的SparkContext时

from pyspark import SparkContext
sc = SparkContext("local[4]", "test")
我得到以下错误:

ValueError: Cannot run multiple SparkContexts at once

我想知道我以前运行示例代码的尝试是否将未清除的内容加载到内存中。是否有办法列出内存中已存在的当前SPARKCONTEXT并/或清除它们,以便示例代码运行?

结果表明,运行./bin/pyspark会以交互方式自动加载SPARKCONTEXT。以下是我启动pyspark时看到的内容:

Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 0.9.1
      /_/

Using Python version 2.6.6 (r266:84292, Feb 22 2013 00:00:18)
Spark context available as sc.
…因此,您可以在开始时运行“del sc”,或者继续使用自动定义的“sc”

该示例的另一个问题是,它看起来是查看常规NFS文件系统位置,而实际上是查看Hadoop的HDFS文件系统。在运行代码之前,我必须使用“hadoop fs-put README.md README.md”将README.md文件上传到$SPARK_HOME位置

下面是我以交互方式运行的修改后的示例程序:

from pyspark import SparkContext
logFile = "README.md"
logData = sc.textFile(logFile).cache()
numAs = logData.filter(lambda s: 'a' in s).count()
numBs = logData.filter(lambda s: 'b' in s).count()
print "Lines with a: %i, lines with b: %i" % (numAs, numBs)
下面是独立python文件的修改版本:

"""SimpleApp.py"""
from pyspark import SparkContext
logFile = "README.md"  # Should be some file on your system
sc = SparkContext("local", "Simple App")
logData = sc.textFile(logFile).cache()
numAs = logData.filter(lambda s: 'a' in s).count()
numBs = logData.filter(lambda s: 'b' in s).count()
print "Lines with a: %i, lines with b: %i" % (numAs, numBs)

我现在可以使用$SPARK_HOME/bin/pyspark SimpleApp.py执行它。在尝试创建另一个SparkContext之前,您是否尝试过使用sc.stop()

e、 g


它会将这些配置应用于PySpark中的sc对象。

这是因为当您在终端中键入“PySpark”时,系统会自动初始化SparkContext(可能是一个对象?),因此您应该在创建新对象之前停止它

你可以用

sc.stop()
sc = SparkContext.getOrCreate()
在创建新SparkContext之前

此外,您还可以使用

sc.stop()
sc = SparkContext.getOrCreate()
而不是

sc = SparkContext()

我是Spark新手,对函数SparkContext()参数的含义不太了解,但上面显示的代码对我都适用。

这样行,但我最初问原始问题的原因是在线Spark教程没有开箱即用!现在我对Spark有了更好的理解,我不想不经修改就运行他们的示例或教程。如果您编写的是独立代码,而不是spark-shell内部的代码,那么这个特定的代码就可以工作。这是如何回答这个问题的呢?正如问题中所问的,您可以将PySpark启动为:PySpark--master local[4]