Я определил конфигурацию по умолчанию в своем приложении 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
и изменяю несколько полей.
Что мне не хватает?
conf
? Этот разделяется двоеточием.files
через запятую. - person Ian   schedule 28.06.2016--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.2016files
. Понятно. Тогда это будет нормально:spark.executor.extraClassPath=/usr/lib/foo/bar.jar:/foo/bar/application.conf
? - person Ian   schedule 28.06.2016--files
, чтобы отправитьapplication.conf
рабочим узлам. Путь должен быть:spark.executor.extraClassPath=bar.jar:application.conf
- person Yuval Itzchakov   schedule 28.06.2016