Я хочу передать переменную через команду spark-submit, в то же время используйте файл конфигурации, присутствующий на сервере.Ниже мой scala-код:
package metrics
object envVariableTest {
def main(args: Array[String]): Unit = {
val conf = ConfigFactory.load()
val sparkConf = new SparkConf().setAppName("env Variable")
val sc = new SparkContext(sparkConf)
println("Environment: "+conf.getString("environment"))
println("Date: "+conf.getString("yestDate"))
}
}
Ниже мой application.properties
локальный файл:
# <-----Environment details----->##
environment = local
yestDate = 20190831
Я просто печатаю вышеуказанную переменную через мой scala-код.Я создаю JAR-файл, используя sbt assembly
, переношу этот JAR-файл на сервер и запускаю класс с помощью команды spark-submit.но на моем сервере у меня есть еще один application.properties
файл, который выглядит так:
# <-----Environment details----->##
environment = server
yestDate = 20190831
, поскольку мы видим только изменение server
с local
я пытаюсь передать yestDate
с помощью команды spark-submit я делаю это, используя:
spark-submit --master local[*] \
--class metrics.envVariableTest \
--files application.properties \
--driver-java-options -Dconfig.file=application.properties \
--driver-java-options -DyestDate=`date --date='1 days ago' '+%Y%m%d'` \
myjar.jar &
, с этим заданием работает нормально и выдает следующие выходные данные:
Environment: local
Date: 20190918
здесь я могу передать значение даты через sparkкоманда -submit, но она не выбирает файл application.properties
, упомянутый в --files
, когда я немного изменяю свою команду spark-submit, передавая --DyestDate
до --files
, затем она поднимаетсясервер application.properties
файл, но не выбирает динамическое значение даты из команды spark-submit, как:
spark-submit --master local[*] \
--class metrics.envVariableTest \
--driver-java-options -DyestDate=`date --date='1 days ago' '+%Y%m%d'` \
--files application.properties \
--driver-java-options -Dconfig.file=application.properties \
myjar.jar &
дает мне:
Environment: server
Date: 20190831
Я не уверен, почему этот простой порядокКоманды, имеющие такой эффект, моя цель - получить server
и 20190918
, что мне нужно изменить, чтобы добиться этого. здесь - документация.