数值错误:在使用pyspark的spark中不能同时运行多个SparkContext。

39

我是新手在使用Spark,我尝试在Pyspark上运行此代码

from pyspark import SparkConf, SparkContext
import collections

conf = SparkConf().setMaster("local").setAppName("RatingsHistogram")
sc = SparkContext(conf = conf)

但他告诉我这个错误消息

Using Python version 3.5.2 (default, Jul  5 2016 11:41:13)
SparkSession available as 'spark'.
>>> from pyspark import SparkConf, SparkContext
>>> import collections
>>> conf = SparkConf().setMaster("local").setAppName("RatingsHistogram")
>>> sc = SparkContext(conf = conf)



   Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "C:\spark\python\pyspark\context.py", line 115, in __init__
        SparkContext._ensure_initialized(self, gateway=gateway, conf=conf)
      File "C:\spark\python\pyspark\context.py", line 275, in _ensure_initialized
        callsite.function, callsite.file, callsite.linenum))
    ValueError: Cannot run multiple SparkContexts at once; existing SparkContext(app=PySparkShell, master=local[*]) created by getOrCreate at C:\spark\bin\..\python\pyspark\shell.py:43
    >>>

我有Spark 2.1.1版本和Python 3.5.2版本,我搜索并发现这是sc的问题,他无法读取它,但不知道为什么,这里有人能提供帮助吗?


4
您正在pyspark2中使用您的代码,该代码已经为您创建了一个SparkSession。不要使用pyspark shell,因为您正在创建自己的SparkContext。将您的代码保存到Python文件中,并通过spark-submit提交。 - arun
@arun 将其发布为答案。 - T. Gawęda
它在Windows Shell中运行,但在Jupyter Notebook或Canopy中根本无法运行。我会找到问题的,非常感谢@arun。 - ibrahim
4个回答

75
你可以尝试一下这个:

sc = SparkContext.getOrCreate();


对我有用。谢谢。 - Saurabh Rana
我也试过了,有效。 - jai

25

您可以尝试:

sc = SparkContext.getOrCreate(conf=conf)

7

您之前的会话仍在进行中。您可以执行

sc.stop()


0

它也可以在 Jupyter lab 中运行。但是你必须注意,因为你之前的会话仍在运行,所以本地无法同时运行两个会话。 sc = SparkContext.getOrCreate(conf=conf)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接