Конфигурация Typesafe в Spark

Я определил конфигурацию по умолчанию в своем приложении Spark, которое спрятано в src/main/resources/reference.conf. Я использую ConfigFactory.load() для получения конфигурации.

Когда я запускаю приложение с spark-submit, оно выбирает эти значения по умолчанию. Однако, когда я хочу переопределить только несколько конфигураций, доступных в reference.conf, и предоставить application.conf, похоже, эти переопределения не подхватываются. Из документации я подумал, что application.conf сливается с reference.conf при вызове load(), чтобы не надо было все переопределять в application.conf.

Мой reference.conf выглядит так:

hdfs {
  rootDir: "/foo"
  dataDir: "hdfs://"${hdfs.rootDir}"/bar"
}

db {
  driver: "com.mysql.jdbc.Driver"
  ...
}

...

То, что я хотел бы сейчас сделать, это иметь application.conf, скажем, только с пользовательским разделом hdfs, потому что остальное то же самое.

Я запускаю свое приложение Spark, указав application.conf как в параметре --files, так и в --driver-class-path и --conf spark.executor.extraClassPath. Это может быть излишним, но это работает, когда я создаю копию reference.conf и изменяю несколько полей.

Что мне не хватает?


person Ian    schedule 28.06.2016    source источник
comment
Какой путь вы устанавливаете для пути класса исполнителя?   -  person Yuval Itzchakov    schedule 28.06.2016
comment
Разве это не тот, который я указал с conf? Этот разделяется двоеточием. files через запятую.   -  person Ian    schedule 28.06.2016
comment
Одна вещь, о которой вы должны знать, это то, что путь для --driver-class-path не совпадает с spark.exector.extraClassPath, это означает, что если вы установите, например, --driver-class-path "/opt/bla/application.conf", эквивалент для исполнителя должен быть только --conf "spark.executor.extraClassPath=application.conf", так как --file выгрузит его в рабочий каталог, где исполнитель запускает uber JAR.   -  person Yuval Itzchakov    schedule 28.06.2016
comment
Так что я могу оставить параметр files. Понятно. Тогда это будет нормально: spark.executor.extraClassPath=/usr/lib/foo/bar.jar:/foo/bar/application.conf?   -  person Ian    schedule 28.06.2016
comment
Нет, вам нужен параметр --files, чтобы отправить application.conf рабочим узлам. Путь должен быть: spark.executor.extraClassPath=bar.jar:application.conf   -  person Yuval Itzchakov    schedule 28.06.2016
comment
Понял. Я изменю его и попробую еще раз.   -  person Ian    schedule 28.06.2016