Согласно документам
Без какого-либо вмешательства вновь отправленные задания попадают в пул по умолчанию, но пулы заданий можно установить, добавив локальное свойство spark.scheduler.pool к SparkContext в потоке, который их отправляет
И
Свойства пула можно установить, создав XML-файл, аналогичный conf / fairscheduler.xml.template, и либо поместив файл с именем fairscheduler.xml в classpath, либо установив свойство spark.scheduler.allocation.file в своем файле. SparkConf
Так что я могу сделать первую часть достаточно легко:
__sp_conf = SparkConf()
__sp_conf.set("spark.scheduler.mode", "FAIR")
sc = SparkContext(conf=__sp_conf)
sc.setLocalProperty("spark.scheduler.pool", "default")
Но как мне получить XML-файл с именем fairscheduler.xml
на путь к классам? Кроме того, classpath чего? Просто водитель? Каждый исполнитель?
Я пытался использовать функцию addFile()
на SparkContext
, но это действительно для возможности доступа к файлам с ваших заданий, я не думаю, что это что-то добавляет к пути к классам.
Моя другая мысль заключалась в изменении переменной среды PYSPARK_SUBMIT_ARGS
, чтобы попытаться возиться с командой, отправленной на spark-submit
, но я не уверен, что есть способ изменить путь к классу, используя этот метод. Кроме того, это только изменит путь к классу драйвера, а не каждого исполнителя, который, я не уверен, сработает или нет.
Чтобы было ясно, если я не предоставлю файл fairscheduler.xml
, Spark жалуется
WARN FairSchedulableBuilder: 66 - Файл конфигурации Fair Scheduler не найден, поэтому задания будут запланированы в порядке FIFO. Чтобы использовать честное планирование, настройте пулы в файле fairscheduler.xml или задайте для spark.scheduler.allocation.file файл, содержащий конфигурацию.