spark-submit: используйте вместе --files и -Dconfig - PullRequest
0 голосов
/ 19 сентября 2019

Я хочу передать переменную через команду 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, что мне нужно изменить, чтобы добиться этого. здесь - документация.

...