如何在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'
答案 0 :(得分:9)
所以你看到SparkConf
不是一个java对象,这种情况正在发生,因为它试图使用SparkConf
作为第一个参数,如果你做sc=SparkContext(conf=conf)
它应该使用您的配置。话虽这么说,你可能更好的只是启动一个常规的python程序而不是停止默认的spark上下文&重新启动它,但你需要使用命名参数技术以任何方式传递conf对象。
答案 1 :(得分:4)
对给定Spark Context进行内联修改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
P.S。如果你需要关闭SparkContext,只需使用:
SparkContext.stop(sc)
并仔细检查您可以使用的当前设置:
sc._conf.getAll()
答案 2 :(得分:3)
更新 Spark 2.3.1
中的配置要更改默认的火花配置,您可以按照以下步骤操作:
导入所需的课程
shape mismatch: value array of shape (10,2) could not be broadcast to indexing result of shape (20,)
获取默认配置
from pyspark.conf import SparkConf
from pyspark.sql import SparkSession
更新默认配置
spark.sparkContext._conf.getAll()
停止当前的Spark会话
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()