Отправить файл свойств приложения с настройкой Spark typesafe - PullRequest
0 голосов
/ 14 ноября 2018

Пожалуйста, мне нужна ваша помощь, я пытаюсь отправить внешний файл конфигурации для моего приложения spark, используя тип_конфигурации safe.

Я загружаю файл application.conf в код своего приложения следующим образом:

  lazy val conf = ConfigFactory.load()

Содержимое файла

  ingestion{
  process {
    value = "sas"
  }
  sas {
    origin{
      value = "/route"
    }
    destination{
      value = "/route"
    }
    extension{
      value = ".sas7bdat"
    }
    file{
      value = "mytable"
    }
    month{
      value = "201010,201011"
    }
    table{
      value = "tbl"
    }
  }
}

Моя искра подчинена

spark2-submit --class com.antonio.Main --master yarn --deploy-mode client --driver-memory 10G --driver-cores 8 --executor-memory 13G --executor-cores 4 --num-executors 10 --verbose  --files properties.conf /home/user/ingestion-1.0-SNAPSHOT-jar-with-dependencies.jar --files application.conf

Но по какой-то причине я получаю

com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'ingestion'

Все выглядит настроенным правильно ?? Я что-то пропустил.

спасибо,

Антонио

1 Ответ

0 голосов
/ 14 ноября 2018

Ваш application.conf по умолчанию должен присутствовать в корне classpath для ConfigFactory.load(), чтобы найти его. Кроме того, вы можете изменить, где найти файл application.conf через системные свойства. Поэтому ваши варианты следующие.

Первый вариант - добавить корневой каталог задания в classpath:

spark2-submit ... \
    --conf spark.driver.extraClassPath=./  \
    --conf spark.executor.extraClassPath=./  \    // if you need to load config at executors
    ...

Оставьте параметр --files как есть. Обратите внимание, что если вы выполняете свою работу в режиме клиента, вы должны передать правильный путь к расположению application.conf на компьютере-драйвере к параметру spark.driver.extraClassPath.

Второй вариант (и я думаю, что этот вариант лучше), вы можете использовать системное свойство config.file, чтобы указать, где ConfigFactory.load() ищет файл конфигурации:

spark2-submit ... \
    --conf spark.driver.extraJavaOptions=-Dconfig.file=./application.conf \
    --conf spark.executor.extraJavaOptions=-Dconfig.file=./application.conf \
    ...

Замечания о загрузке конфигурации на исполнителей и сохранении опции --files также применимы здесь.

...