我最初有这个配置文件:
my-app {
environment: dev
other: xxx
}
这是我在Spark Scala代码中加载配置的方式:
val config = ConfigFactory.parseFile(File<"my-app.conf">)
.withFallback(ConfigFactory.load())
.resolve
.getConfig("my-app")
通过此设置,尽管Typesafe Config文档和其他所有答案都说了什么,但当我启动我的spark作业时,系统属性覆盖对我不起作用,如下所示:
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
-Dx=y
在命令行上。