Как добавить файл конфигурации в путь к классам всех исполнителей Spark в Spark 1.2.0?

Я использую Configafe Config, https://github.com/typesafehub/config, для параметризации задания Spark, выполняющегося в режиме нитевого кластера, с конфигурационным файлом. Поведение Configades Config по умолчанию заключается в поиске пути к классам с именами, соответствующими регулярному выражению, и автоматически загружать их в ваш класс конфигурации с помощью ConfigFactory.load() (для наших целей предполагаемый файл, который он ищет, называется application.conf),

Я могу загрузить файл конфигурации в драйвер, используя --driver-class-path <directory containing configuration file>, но используя --conf spark.executor.extraClassPath=<directory containing configuration file>, не помещает ресурс на classpath всех исполнителей вроде этого. Исполнители сообщают, что они не могут найти определенный параметр конфигурации для ключа, который существует в файле конфигурации, который я пытаюсь добавить к их классам.

Каков правильный способ добавления файла в пути к классам всех JVM-исполнителей с использованием Spark?

Ответ 1

Похоже, что значение свойства spark.executor.extraClassPath относится к рабочему каталогу приложения НА ИСПОЛНИТЕЛЕ.

Таким образом, чтобы правильно использовать это свойство, следует использовать --files <configuration file> чтобы сначала --files <configuration file> Spark, чтобы скопировать файл в рабочий каталог всех исполнителей, затем используйте spark.executor.extraClassPath=./ Чтобы добавить рабочий каталог исполнителя к его классовому пути. Эта комбинация приводит к тому, что исполнитель может считывать значения из файла конфигурации.

Ответ 2

Я использую метод SparkContext addFile

val sc: SparkContext = {
  val sparkConf = new SparkConf()
    .set("spark.storage.memoryFraction", "0.3")
    .set("spark.driver.maxResultSize", "10g")
    .set("spark.default.parallelism", "1024")
    .setAppName("myproject")
  sparkConf.setMaster(getMaster)
  val sc = new SparkContext(sparkConf)
  sc.addFile("application.conf")
  sc
}