Невозможно переопределить конфигурацию Typesafe в командной строке в Spark

У меня есть безопасная конфигурация 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 вы можете перейти к переопределению определенных параметров.

это должно быть возможно с этими параметрами.


person Georg Heiler    schedule 10.12.2017    source источник


Ответы (1)


spark-submit \
    --class my.Class \
    --master "local[2]" \
    --files foo.conf \
    --conf spark.driver.extraJavaOptions="-Dvalue='abcd' -Dconfig.file=foo.conf" \
    target/scala-2.11/jar-0.1-SNAPSHOT.jar

переход с spark.driver.extraClassPath на spark.driver.extraJavaOptions помогает

person Georg Heiler    schedule 10.12.2017
comment
Привет, @Georg Heiler. Не могли бы вы посоветовать мне этот stackoverflow.com/questions/62094327/ - person Pavan_Obj; 31.05.2020