Я хочу изменить конфигурацию Typafe для задания Spark в среде dev / prod. Мне кажется, что самый простой способ добиться этого - перейти -Dconfig.resource=ENVNAME
на работу. Тогда библиотека конфигурации Typesafe сделает всю работу за меня.
Есть ли способ передать эту возможность напрямую работе? Или, может быть, есть лучший способ изменить конфигурацию задания во время выполнения?
РЕДАКТИРОВАТЬ:
- Когда я добавляю
--conf "spark.executor.extraJavaOptions=-Dconfig.resource=dev"
опцию в команду spark-submit, ничего не происходит . - Я получил,
Error: Unrecognized option '-Dconfig.resource=dev'.
когда перешел-Dconfig.resource=dev
к команде spark-submit .
scala
apache-spark
Копичко
источник
источник
-Dx=y
командной строки.Ответы:
Измените
spark-submit
командную строку, добавив три параметра:--files <location_to_your_app.conf>
--conf 'spark.executor.extraJavaOptions=-Dconfig.resource=app'
--conf 'spark.driver.extraJavaOptions=-Dconfig.resource=app'
источник
--conf 'spark.executor.extraJavaOptions=-Dconfig.resource=app'
опции не будет работать, если Spark отправит драйвер в клиентском режиме.--driver-java-options "-Dconfig.resource=app"
Вместо этого используйте . См. Конфигурация Spark .--files <location_to_your.conf>#application.conf --driver-java-options -Dconfig.file=your.conf
#
spark-submit --driver-java-options='-Dmy.config.path=myConfigValue'
Вот моя искровая программа, запущенная с дополнительным параметром java
/home/spark/spark-1.6.1-bin-hadoop2.6/bin/spark-submit \ --files /home/spark/jobs/fact_stats_ad.conf \ --conf spark.executor.extraJavaOptions=-Dconfig.fuction.conf \ --conf 'spark.driver.extraJavaOptions=-Dalluxio.user.file.writetype.default=CACHE_THROUGH -Dalluxio.user.file.write.location.policy.class=alluxio.client.file.policy.MostAvailableFirstPolicy -Dconfig.file=/home/spark/jobs/fact_stats_ad.conf' \ --class jobs.DiskDailyJob \ --packages com.databricks:spark-csv_2.10:1.4.0 \ --jars /home/spark/jobs/alluxio-core-client-1.2.0-RC2-jar-with-dependencies.jar \ --driver-memory 2g \ /home/spark/jobs/convert_to_parquet.jar \ AD_COOKIE_REPORT FACT_AD_STATS_DAILY | tee /data/fact_ad_stats_daily.log
как вы можете видеть пользовательский файл конфигурации
--files /home/spark/jobs/fact_stats_ad.conf
параметры java исполнителя
--conf spark.executor.extraJavaOptions=-Dconfig.fuction.conf
параметры драйвера java.
--conf 'spark.driver.extraJavaOptions=-Dalluxio.user.file.writetype.default=CACHE_THROUGH -Dalluxio.user.file.write.location.policy.class=alluxio.client.file.policy.MostAvailableFirstPolicy -Dconfig.file=/home/spark/jobs/fact_stats_ad.conf'
Надеюсь, это поможет.
источник
У меня было много проблем с передачей параметров -D для запуска исполнителей и драйвера, я добавил об этом цитату из своего сообщения в блоге: «Правильный способ передать параметр - через свойство:«
spark.driver.extraJavaOptions
»и«spark.executor.extraJavaOptions
»: Я передал и свойство конфигурации log4J, и параметр, который мне нужен для конфигураций. (Драйверу я смог передать только конфигурацию log4j). Например (был записан в файле свойств, переданном в spark-submit с помощью «- файл свойств »):«spark.driver.extraJavaOptions –Dlog4j.configuration=file:///spark/conf/log4j.properties - spark.executor.extraJavaOptions –Dlog4j.configuration=file:///spark/conf/log4j.properties -Dapplication.properties.file=hdfs:///some/path/on/hdfs/app.properties spark.application.properties.file hdfs:///some/path/on/hdfs/app.properties
«
Вы можете прочитать мое сообщение в блоге об общих конфигурациях Spark. Я тоже использую Yarn.
источник
--files <location_to_your_app.conf> --conf 'spark.executor.extraJavaOptions=-Dconfig.resource=app' --conf 'spark.driver.extraJavaOptions=-Dconfig.resource=app'
если вы напишете таким образом, то последнее
--conf
перезапишет предыдущее, вы можете проверить это, посмотрев на sparkUI после запуска задания наEnvironment
вкладке.поэтому правильный способ - поместить параметры в одну строку, например:
--conf 'spark.executor.extraJavaOptions=-Da=b -Dc=d'
если вы это сделаете, вы увидите, что все ваши настройки будут отображаться в SparkUI.источник
--conf
дважды.Я запускаю свое приложение Spark с помощью команды spark-submit, запущенной из другого приложения Scala. Итак, у меня есть массив вроде
Array(".../spark-submit", ..., "--conf", confValues, ...)
где
confValues
находится:yarn-cluster
режима:"spark.driver.extraJavaOptions=-Drun.mode=production -Dapp.param=..."
local[*]
режима:"run.mode=development"
Однако немного сложно понять, где (не) избегать кавычек и пробелов. Вы можете проверить веб-интерфейс Spark на предмет значений системных свойств.
источник
local[*]
режима). Попробую сyarn-cluster
режимом иspark-submit --driver-java-options "-Denv=DEV -Dmode=local" --class co.xxx.datapipeline.jobs.EventlogAggregator target/datapipeline-jobs-1.0-SNAPSHOT.jar
Приведенная выше команда работает для меня:
-Denv=DEV
=> для чтения файла свойств DEV env и-Dmode=local
=> для создания SparkContext в локальном - .setMaster ("local [*]")источник
Используйте метод, как в команде ниже, может быть вам полезен -
Я пробовал, и это сработало для меня, я бы посоветовал также пройтись по заголовку ниже, что действительно полезно - https://spark.apache.org/docs/latest/running-on-yarn.html
источник
Изначально у меня был этот файл конфигурации:
Вот как я загружаю свою конфигурацию в свой код Spark Scala:
val config = ConfigFactory.parseFile(File<"my-app.conf">) .withFallback(ConfigFactory.load()) .resolve .getConfig("my-app")
С этой настройкой, несмотря на то, что говорится в документации по Typesafe Config и во всех других ответах, переопределение системного свойства не сработало для меня, когда я запустил свою искровую работу следующим образом:
spark-submit \ --master yarn \ --deploy-mode cluster \ --name my-app \ --driver-java-options='-XX:MaxPermSize=256M -Dmy-app.environment=prod' \ --files my-app.conf \ my-app.jar
Чтобы заставить его работать, мне пришлось изменить свой файл конфигурации на:
my-app { environment: dev environment: ${?env.override} other: xxx }
а затем запускаем так:
spark-submit \ --master yarn \ --deploy-mode cluster \ --name my-app \ --driver-java-options='-XX:MaxPermSize=256M -Denv.override=prod' \ --files my-app.conf \ my-app.jar
источник