我是Spark的新手,因此需要有关以下问题的一些指导- 每当我尝试使用SparkConf对象创建SparkSession对象时,都会收到以下错误-
AttributeError:“ SparkConf”对象没有属性“ _get_object_id”
我在本地模式下将Spark 2.3与Python 3.7一起使用。
sconf=SparkConf.setAppName("test")
ss=SparkSession.builder.config(conf=sconf).getOrCreate()
我已经阅读了一些互联网上可用的解决方案,但是没有一个解决了我的问题。
即使我尝试直接创建SparkSession对象(即没有显式的SparkConf对象),也会遇到相同的错误-
ss=SparkSession.builder.master("local").getOrCreate()
AttributeError: 'SparkConf' object has no attribute '_get_object_id'
答案 0 :(得分:1)
不要创建新的 SparkConf() 对象:它将是一个 python 对象,显然与 Spark 的非 python 部分不兼容(它没有强制性的 _get_object_id() 方法,如错误消息所示)。
来自构建器的 config() 方法是累积的,所以你应该这样做:
ss = SparkSession \
.builder \
.appName("test") \
.config("some.parameter", "some.value") \
.config("some.other.parameter", "some.other.value") \
etc...
.getOrCreate()
答案 1 :(得分:0)
您可能缺少括号
sconf=SparkConf().setAppName("test")
如果不起作用,我尝试了以下在当地有效的方法
from pyspark.sql import SparkSession
from pyspark import SparkConf
sconf=SparkConf().setAppName("test")
ss=SparkSession.builder.config(conf=sconf).getOrCreate()
答案 2 :(得分:0)
您可以这样定义配置-
from pyspark.conf import SparkConf
from pyspark.sql import SparkSession
conf = spark.sparkContext._conf.setAll([('spark.app.name', 'Spark Test')])
spark = SparkSession.builder.config(conf=conf).getOrCreate()