我的代码是:
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开发套件更新为最新版本。它也没有解决错误。有什么建议吗?
答案 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。
希望这会帮助并原谅我的表情。