Как изменить свойства SparkContext в интерактивном сеансе PySpark

Как я могу поменять свечи.водитель.maxResultSize в интерактивной оболочке pyspark? Я использовал следующий код

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'

3 ответов


Так что вы видите, что SparkConf не является объектом java, это происходит потому, что он пытается использовать SparkConf в качестве первого параметра, если вместо вас sc=SparkContext(conf=conf) он должен использовать свою конфигурацию. Тем не менее, вам может быть лучше просто запустить обычную программу python, а не останавливать контекст spark по умолчанию и повторно запускать его, но вам нужно будет использовать метод именованных параметров для передачи объекта conf в любом случае.


правильный способ встроенного изменения настроек 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

p.s. если вам нужно закрыть SparkContext, просто используйте:

SparkContext.stop(sc)

и дважды проверить текущие настройки, которые были установлены, Вы можете использовать:

sc._conf.getAll()

обновить конфигурацию в Искра 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 = SparkSession.builder.config(conf=conf).getOrCreate()