我在application.conf
文件夹中有一个类型安全配置src/main/resources
,默认情况下已加载。
可以通过指定:
覆盖单个值--conf spark.driver.extraJavaOptions=-DsomeValue="foo"
但是,指定一个完整的新文件,即覆盖application.conf
文件,如:
spark-submit \
--class my.Class \
--master "local[2]" \
--files foo.conf \
--conf spark.driver.extraClassPath="-Dconfig.file=file:foo.conf" \
--conf spark.driver.extraJavaOptions=-Dvalue="abcd" \
job.jar
无法加载foo.conf
。而是将加载资源文件夹中的原始文件。
尝试来自Using typesafe config with Spark on Yarn的技巧也无济于事。
Overriding multiple config values in Typesafe config when using an uberjar to deploy似乎是普通(无火花)程序的答案。 问题仍然是如何引发这种情况。
同样通过:
--conf spark.driver.extraClassPath="-Dconfig.resource=file:foo.conf"
--conf spark.driver.extraClassPath="-Dconfig.resource=foo.conf"
无法从命令行加载我的配置。
虽然,根据文件:
https://github.com/lightbend/config对于使用的应用程序 application。{conf,json,properties},系统属性可以用来 强制使用不同的配置源(例如,从命令行 -Dconfig.file =路径/到/配置文件中):
- config.resource指定资源名称 - 而不是基本名称,即application.conf not application
- config.file指定文件系统路径,同样应该包含扩展名,而不是基本名称
- config.url指定网址
这些系统属性指定替换 application。{conf,json,properties},而不是添加。他们只影响 使用默认ConfigFactory.load()配置的应用程序。在里面 替换配置文件,您可以使用include“application”来包含 原始默认配置文件;在包含声明后你 可以继续覆盖某些设置。
应该可以使用这些参数。
答案 0 :(得分:3)
spark-submit \
--class my.Class \
--master "local[2]" \
--files foo.conf \
--conf spark.driver.extraJavaOptions="-Dvalue='abcd' -Dconfig.file=foo.conf" \
target/scala-2.11/jar-0.1-SNAPSHOT.jar
从spark.driver.extraClassPath
更改为spark.driver.extraJavaOptions
正在诀窍