【问题标题】:Issue while creating SparkSession object using SparkConf使用 SparkConf 创建 SparkSession 对象时出现问题
【发布时间】:2021-02-23 23:12:30
【问题描述】:

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

【问题讨论】:

  • pyspark 的哪个版本?
  • 版本为2.3

标签: python apache-spark pyspark pyspark-sql


【解决方案1】:

不要创建新的 SparkConf() 对象:它将是一个 python 对象,显然与 Spark 的非 python 部分不兼容(它没有强制的 _get_object_id() 方法,如错误消息所示)。

builder 的 config() 方法是累积的,所以你应该这样做:

ss = SparkSession \
    .builder \
    .appName("test") \
    .config("some.parameter", "some.value") \
    .config("some.other.parameter", "some.other.value") \ 
       etc...
    .getOrCreate()

【讨论】:

【解决方案2】:

你可以像这样定义配置 -

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

【讨论】:

  • 我使用了以下内容,它对我有用 -conf=SparkConf().setAll([("spark.app.master","local"),("spark.appName","Test ")])
【解决方案3】:

您可能缺少括号 sconf=SparkConf().setAppName("test") 如果它不起作用,我在本地尝试了以下方法

from pyspark.sql import SparkSession
from pyspark import SparkConf
sconf=SparkConf().setAppName("test")
ss=SparkSession.builder.config(conf=sconf).getOrCreate()

【讨论】:

  • SparkConf() 实例化的括号确实丢失了。但添加它们并不能修复错误。
猜你喜欢
  • 2020-11-13
  • 2020-10-13
  • 2021-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
  • 2021-07-17
  • 2018-09-02
相关资源
最近更新 更多