【问题标题】:How to change SparkContext properties in Interactive PySpark session如何在交互式 PySpark 会话中更改 SparkContext 属性
【发布时间】:2015-09-02 20:45:44
【问题描述】:

如何在 pyspark 交互式 shell 中更改 spark.driver.maxResultSize?我使用了以下代码

from pyspark import SparkConf, SparkContext
conf = (SparkConf()
    .set("spark.driver.maxResultSize", "10g"))
sc.stop()
sc=SparkContext(conf)

但它给了我错误

AttributeError: 'SparkConf' object has no attribute '_get_object_id'

【问题讨论】:

    标签: python apache-spark pyspark


    【解决方案1】:

    所以你看到SparkConf 不是一个java 对象,这是因为它试图使用SparkConf 作为第一个参数,如果你这样做sc=SparkContext(conf=conf) 它应该使用你的配置。话虽这么说,你可能最好只启动一个常规的 python 程序,而不是停止默认的 spark 上下文并重新启动它,但是你需要使用命名参数技术来传递 conf 对象。

    【讨论】:

    • 谢谢,我只是错过了
    • 当我第一次看的时候我也是这样(不幸的是,我们不能在 Python 中轻松地做与在 Scala 中相同的类型技巧,因为它很难匹配 API,除非我们添加一些非常丑陋的代码)。
    【解决方案2】:

    Spark 2.3.1

    中更新配置

    要更改默认 spark 配置,您可以按照以下步骤操作:

    导入所需的类

    from pyspark.conf import SparkConf
    from pyspark.sql import SparkSession
    

    获取默认配置

    spark.sparkContext._conf.getAll()
    

    更新默认配置

    conf = spark.sparkContext._conf.setAll([('spark.executor.memory', '4g'), ('spark.app.name', 'Spark Updated Conf'), ('spark.executor.cores', '4'), ('spark.cores.max', '4'), ('spark.driver.memory','4g')])
    

    停止当前 Spark 会话

    spark.sparkContext.stop()
    

    创建 Spark 会话

    spark = SparkSession.builder.config(conf=conf).getOrCreate()
    

    【讨论】:

    【解决方案3】:

    在线修改给定 Spark 上下文的 spark 设置的正确方法需要关闭上下文。例如:

    from pyspark import SparkContext
    SparkContext.setSystemProperty('spark.driver.maxResultSize', '10g')
    sc = SparkContext("local", "App Name")
    

    来源:https://spark.apache.org/docs/0.8.1/python-programming-guide.html

    附言如果您需要关闭 SparkContext,只需使用:

    SparkContext.stop(sc)
    

    并仔细检查您可以使用的当前设置:

    sc._conf.getAll()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-17
      • 1970-01-01
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多