我该如何解决TypeError:'SparkContext'对象不可调用错误?

时间:2020-10-20 20:14:16

标签: pyspark

我的代码是:

import pyspark
from pyspark.sql import SparkSession
from pyspark.conf import SparkConf
from pyspark import SparkContext

spark = SparkSession.builder \
    .master("local") \
    .appName("pyspark_uygulama") \
    .getOrCreate()

sc = spark.sparkContext()
sc

我得到这个错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-2fb21ed9bfcc> in <module>
      9     .getOrCreate()
     10 
---> 11 sc = spark.sparkContext()
     12 sc

TypeError: 'SparkContext' object is not callable

首先,我将spark.SparkContext()更改为spark.sparkContext()无效(它解决了另一个问题)。我将Java开发套件更新为最新版本。它也没有解决错误。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

错误消息正确,spark.sparkContext肯定无法调用,请在此处查看文档(不熟悉pyspark,我将解释如何在scala中使用spark)

val sparkContext:SparkContext
与此Spark会话关联的Spark上下文。\

根据文档,spark.sparkContext不接受任何参数。

实际上有两个sparkContext:一个在org.apache.spark中,另一个在org.apache.spark.sql.SparkSession中。

为了方便用户,spark.sparkContext提供了一种无需实例化即可访问SparkContext的方法,但其功能有限。人们必须亲自实例化org.apache.spark.SparkContext以获得全部功能。

如果您确实需要具有完整功能的sparkContext对象,建议您亲自实例化SparkContext, 如果您要访问SparkContext的方法(例如并行化,textFile等),则可以在不调用sparkContext的情况下进行操作,

sc = spark.sparkContext
sc.parallelize(...) 
sc.textFile(...)
可以通过SparkSession.builder()。master()。appName(...)。config设置org.apache.spark(在pyspark中,应该是pyspark.SparkContext)内部SparkContext的构造函数的参数。 (...),因此实际上您不需要调用spark.sparkContext。

希望这会帮助并原谅我的表情。