У меня есть безопасная конфигурация application.conf
в папке src/main/resources
, которая загружается по умолчанию.
Одно значение можно переопределить, указав:
--conf spark.driver.extraJavaOptions=-DsomeValue="foo"
Однако указание полностью нового файла, т. Е. Переопределения файла application.conf
, например:
spark-submit \
--class my.Class \
--master "local[2]" \
--files foo.conf \
--conf spark.driver.extraClassPath="-Dconfig.file=file:foo.conf" \
--conf spark.driver.extraJavaOptions=-Dvalue="abcd" \
job.jar
не сможет загрузить foo.conf
. Вместо этого будет загружен исходный файл из папки ресурсов. Попробуйте уловки из: Использование безопасного типа конфигурации с Spark on Yarn не помогло тоже помощь.
редактировать
Переопределение нескольких значений конфигурации в Typesafe config при использовании uberjar для развертывания кажется ответом на простые (без искры) программы. Остается вопрос, как довести это до искры.
Также прохождение:
--conf spark.driver.extraClassPath="-Dconfig.resource=file:foo.conf"
--conf spark.driver.extraClassPath="-Dconfig.resource=foo.conf"
не может загрузить мою конфигурацию из командной строки.
Хотя, согласно документам:
https://github.com/lightbend/config Для приложений, использующих application. {conf, json, properties }, системные свойства могут использоваться для принудительного использования другого источника конфигурации (например, из командной строки -Dconfig.file = path / to / config-file):
- config.resource указывает имя ресурса, а не базовое имя, т.е. application.conf, а не приложение
- config.file указывает путь к файловой системе, опять же, он должен включать расширение, а не базовое имя
- config.url указывает URL-адрес
Эти системные свойства определяют замену application. {Conf, json, properties}, а не дополнение. Они влияют только на приложения, использующие конфигурацию ConfigFactory.load () по умолчанию. В заменяющем файле конфигурации вы можете использовать include «application», чтобы включить исходный файл конфигурации по умолчанию; после оператора include вы можете перейти к переопределению определенных параметров.
это должно быть возможно с этими параметрами.