使用类型安全库和 extraJavaOptions 合并 spark 配置

Merging configurations for spark using typesafe library and extraJavaOptions

我正在尝试使用

合并 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-submit ....... --conf spark.driver.extraJavaOptions=-Dconfig.resource=./reference.conf,-Duser.resource=./user.conf ...

在 spark 中定义我的 java 变量

我的目标是能够指向一个不在我的 jar 中的文件,供 System.getProperty("..") 在我的代码中使用。我更改了用于测试的文件夹 (cd ..) 并不断收到相同的错误,所以我猜 spark 不关心我的 java 参数..?

有没有办法指向一个文件(在我的情况下甚至是 2 个文件)以便它们可以合并?

我还尝试包含 reference.conf 文件但不包含 user.conf 文件:它识别 reference.conf 但不识别我用 [=13 提供的 user.conf =].

有办法吗?如果你能帮忙谢谢

我没看到您ConfigFactory.parseFile 加载包含属性的文件。

Typesafe 自动读取 class 路径中的任何 .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() 已经包含 class 路径和 -d 参数中的属性文件中存在的所有属性。我优先考虑我的外部 "application.conf" 并退回到默认值。对于匹配键 "application.conf" 优先于其他来源。