使用SparkConf创建SparkSession对象时出现问题

时间:2019-05-11 11:27:13

标签: python apache-spark pyspark pyspark-sql

我是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'

3 个答案:

答案 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()