Исправить 2.1.0 настройки конфигурации сеанса (pyspark)

Я пытаюсь перезаписать конфигурацию по умолчанию для искрового сеанса/искрового контекста, но он выбирает весь ресурс node/cluster.

 spark  = SparkSession.builder
                      .master("ip")
                      .enableHiveSupport()
                      .getOrCreate()

 spark.conf.set("spark.executor.memory", '8g')
 spark.conf.set('spark.executor.cores', '3')
 spark.conf.set('spark.cores.max', '3')
 spark.conf.set("spark.driver.memory",'8g')
 sc = spark.sparkContext

Он отлично работает, когда я устанавливаю конфигурацию в иске submit

spark-submit --master ip --executor-cores=3 --diver 10G code.py

Ответ 1

На самом деле вы ничего не переписываете с помощью этого кода. Только так вы можете сами убедиться в следующем.

Как только вы запустите тип оболочки pyspark:

sc.getConf().getAll()

Это покажет вам все текущие настройки конфигурации. Затем попробуйте свой код и сделайте это снова. Ничего не меняется.

Вместо этого вам следует создать новую конфигурацию и использовать ее для создания SparkContext. Сделайте это так:

conf = pyspark.SparkConf().setAll([('spark.executor.memory', '8g'), ('spark.executor.cores', '3'), ('spark.cores.max', '3'), ('spark.driver.memory','8g')])
sc.stop()
sc = pyspark.SparkContext(conf=conf)

Затем вы можете проверить себя, как показано выше:

sc.getConf().getAll()

Это должно отражать желаемую конфигурацию.

Ответ 2

обновить конфигурацию в Spark 2.3.1

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

Импортируйте необходимые классы

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.driver.host" на "localhost" в конфиге работает для меня

spark = SparkSession \
    .builder \
    .appName("MyApp") \
    .config("spark.driver.host", "localhost") \
    .getOrCreate()

Ответ 4

Вы также можете настроить конфигурацию, когда запускаете pyspark, как и spark-submit:

pyspark --conf property=value

Вот один пример

-bash-4.2$ pyspark
Python 3.6.8 (default, Apr 25 2019, 21:02:35) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ '/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 2.4.0-cdh6.2.0
      /_/

Using Python version 3.6.8 (default, Apr 25 2019 21:02:35)
SparkSession available as 'spark'.
>>> spark.conf.get('spark.eventLog.enabled')
'true'
>>> exit()


-bash-4.2$ pyspark --conf spark.eventLog.enabled=false
Python 3.6.8 (default, Apr 25 2019, 21:02:35) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ '/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 2.4.0-cdh6.2.0
      /_/

Using Python version 3.6.8 (default, Apr 25 2019 21:02:35)
SparkSession available as 'spark'.
>>> spark.conf.get('spark.eventLog.enabled')
'false'