我正在尝试合并 2 个配置文件(或基于单个参考文件创建配置文件(
lazy val finalConfig:
Option(System.getProperty("user.resource"))
.map(ConfigFactory.load)
.map(_.withFallback(ConfigFactory.load(System.getProperty("config.resource"))).resolve())
.getOrElse(ConfigFactory.load(System.getProperty("config.resource")))
我正在使用 Spark 在spark-submit ....... --conf spark.driver.extraJavaOptions=-Dconfig.resource=./reference.conf,-Duser.resource=./user.conf ...
中定义我的 java 变量
我的目标是能够将不在 jar 中的文件指向我的代码中的 System.getProperty(".."( 使用。我更改了用于测试的文件夹(cd ..
(并不断收到相同的错误,所以我想 spark 不关心我的 java 参数..?
有没有办法指向一个文件(在我的情况下甚至是 2 个文件(以便可以合并它们?
我还尝试包含 reference.conf 文件,但不包含 user.conf 文件:它识别 reference.conf 而不是我用--conf spark.driver.extraJavaOptions=-Duser.resource=./user.conf
给出的 user.conf
。有没有办法做到这一点?谢谢,如果你能帮忙
我没有看到您ConfigFactory.parseFile
加载包含属性的文件。
Typesafe 会自动读取类路径中的任何.properties
文件,所有 -D 参数传入 JVM,然后合并它们。
我正在读取一个不属于jar的外部属性文件,如下所示。文件 "application.conf" 放在保存 jar 的同一目录中。
val applicationRootPath = System.getProperty("user.dir")
val config = Try {
ConfigFactory.parseFile(new File(applicationRootPath + "/" + "application.conf"))
}.getOrElse(ConfigFactory.empty())
appConfig = config.withFallback(ConfigFactory.load()).resolve
ConfigFactory.load()
已包含类路径和 -d 参数中的属性文件上存在的所有属性。我优先考虑我的外部"application.conf"并回退到默认值。对于匹配的键,"application.conf"优先于其他源。