如何在Interactive PySpark会话中更改SparkContext属性

MAR*_*ARK 11 python apache-spark pyspark

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

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

但它给了我错误

AttributeError: 'SparkConf' object has no attribute '_get_object_id'
Run Code Online (Sandbox Code Playgroud)

Hol*_*den 9

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


bob*_*bob 6

更新Spark 2.3.1中的配置

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

导入所需的类

from pyspark.conf import SparkConf
from pyspark.sql import SparkSession
Run Code Online (Sandbox Code Playgroud)

获取默认配置

spark.sparkContext._conf.getAll()
Run Code Online (Sandbox Code Playgroud)

更新默认配置

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')])
Run Code Online (Sandbox Code Playgroud)

停止当前的Spark会话

spark.sparkContext.stop()
Run Code Online (Sandbox Code Playgroud)

创建一个Spark会话

spark = SparkSession.builder.config(conf=conf).getOrCreate()
Run Code Online (Sandbox Code Playgroud)


abb*_*obh 5

内联修改给定Spark上下文的Spark设置的正确方法要求关闭上下文。例如:

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

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

ps,如果您需要关闭SparkContext,请使用:

SparkContext.stop(sc)
Run Code Online (Sandbox Code Playgroud)

并再次检查已设置的当前设置,可以使用:

sc._conf.getAll()
Run Code Online (Sandbox Code Playgroud)