pyspark - 我该如何解决 TypeError: 'SparkContext' object is not callable 错误?
问题描述
我的代码是:
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 开发工具包更新到最新版本。它也没有解决错误。有什么建议吗?
解决方案
报错信息是对的,spark.sparkContext 肯定是不可调用的,查看这里的文档(不熟悉pyspark,我会解释使用spark 和scala)
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(...)
org.apache.spark 中 SparkContext 的构造函数的参数(在 pyspark 中应该是 pyspark.SparkContext 我猜)可以通过 SparkSession.builder().master().appName(...).config(.. .),因此您实际上不需要调用 spark.sparkContext。
希望这会有所帮助并原谅我的表达。
推荐阅读
- spring-boot - Springboot从不同的url登录
- java - 当我的 android App 收到 firebase 消息通知时,然后关闭
- php - 如何通过 AJAX 将帖子发送到 PHP 并加载特定的 div
- java - 无法发送 Android 消息应用程序的推送通知?
- python - 使用掩码中的列表过滤数据框中的日期
- python - 在数据框中滚动 10 分钟的最近值
- c++ - 二叉搜索树中的删除操作
- python - 为什么我的局部变量没有覆盖全局变量?
- powershell - powershell远程脚本执行错误
- javascript - Javascript 过滤器不适用于 Google Script Apps 功能