Подтвердить что ты не робот

Можно ли получить текущие настройки искрового контекста в PySpark?

Я пытаюсь получить путь к spark.worker.dir для текущего sparkcontext.

Если я явно задал его как config param, я могу прочитать его обратно из SparkConf, но есть ли вообще доступ к полному config (включая все значения по умолчанию) с помощью PySpark?

4b9b3361

Ответ 1

Да: sc._conf.getAll()

Использует метод:

SparkConf.getAll()

при доступе к

SparkContext.sc._conf

Обратите внимание на подстрочный знак: это делает это сложным. Мне пришлось посмотреть исходный код искры, чтобы понять это;)

Но он работает:

In [4]: sc._conf.getAll()
Out[4]:
[(u'spark.master', u'local'),
 (u'spark.rdd.compress', u'True'),
 (u'spark.serializer.objectStreamReset', u'100'),
 (u'spark.app.name', u'PySparkShell')]

Ответ 2

Spark 2.1 +

spark.sparkContext.getConf().getAll() где spark - ваш sparksession (дает вам dict со всеми настроенными настройками)

Ответ 3

Искра 1.6 +

sc.getConf.getAll.foreach(println)

Ответ 4

обновить конфигурацию в 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()

Ответ 5

Для полного обзора вашей среды и конфигурации Spark я нашел следующие полезные фрагменты кода:

SparkContext:

for item in sorted(sc._conf.getAll()): print(item)

Конфигурация Hadoop:

hadoopConf = {}
iterator = sc._jsc.hadoopConfiguration().iterator()
while iterator.hasNext():
    prop = iterator.next()
    hadoopConf[prop.getKey()] = prop.getValue()
for item in sorted(hadoopConf.items()): print(item)

Переменные среды:

import os
for item in sorted(os.environ.items()): print(item)

Ответ 6

К сожалению, нет, платформа Spark начиная с версии 2.3.1 не предоставляет программного способа доступа к значению каждого свойства во время выполнения. Он предоставляет несколько методов для доступа к значениям свойств, которые были явно установлены через файл конфигурации (например, spark-defaults.conf), установлены через объект SparkConf при создании сеанса или установлены через командную строку при SparkConf задания, но ни один из этих методов не покажет значение по умолчанию для свойства, которое не было явно установлено. Для полноты картины лучшие варианты:

  • Веб-интерфейс приложений Spark, обычно по адресу http://<driver>:4040, имеет вкладку "Среда" с таблицей значений свойств.
  • SparkContext сохраняет скрытую ссылку на его конфигурацию в PySpark, а конфигурация обеспечивает getAll метод: spark.sparkContext._conf.getAll().
  • Spark SQL предоставляет команду SET которая будет возвращать таблицу значений свойств: spark.sql("SET").toPandas(). Вы также можете использовать SET -v чтобы включить столбец с описанием свойств.

(Все эти три метода возвращают одни и те же данные в моем кластере.)

Ответ 7

Вы можете использовать:

ssc.sparkContext.getConf.getAll

Например, у меня часто есть следующие в верхней части моих программ Spark:

logger.info(ssc.sparkContext.getConf.getAll.mkString("\n"))

Ответ 8

sc.getConf(). getAll() выдаст вам список всех настроек

Ответ 9

Не уверен, что вы можете легко получить все настройки по умолчанию, но специально для рабочего каталога, это довольно сложно: вперед/назад >

from pyspark import SparkFiles
print SparkFiles.getRootDirectory()

Ответ 10

Только для записей аналогичная версия java:

Tuple2<String, String> sc[] = sparkConf.getAll();
for (int i = 0; i < sc.length; i++) {
    System.out.println(sc[i]);
}

Ответ 11

Для Spark 2+ вы также можете использовать при использовании Scala

spark.conf.getAll; //spark as spark session 

Ответ 12

Показ конфигурации работает с использованием этого, как указано выше...

spark.sparkContext.getConf().getAll()

но я не видел, как показать spark.executor.memory, чтобы определить, какая память доступна для сеанса spark?