Apache spark spark submit覆盖默认应用程序.conf不工作
我正在构建一个jar,它在Apache spark spark submit覆盖默认应用程序.conf不工作,apache-spark,Apache Spark,我正在构建一个jar,它在src/main/resources文件夹下有application.conf。但是,在执行spark submit时,我试图覆盖它。但是它不起作用 以下是我的命令 $spark_submit $spark_params $hbase_params \ --class com.abc.xyz.MYClass \ --files application.conf \ $sandbox_jar flagFile/test.FLG \ --co
src/main/resources
文件夹下有application.conf
。但是,在执行spark submit
时,我试图覆盖它。但是它不起作用
以下是我的命令
$spark_submit $spark_params $hbase_params \
--class com.abc.xyz.MYClass \
--files application.conf \
$sandbox_jar flagFile/test.FLG \
--conf "spark.executor.extraClassPath=-Dconfig.file=application.conf"
application.conf
-与jar文件位于同一目录中 -Dconfig.file=path/to/config file
由于ConfigFactory上的内部缓存,可能无法工作。文档建议运行ConfigFactory.invalidateCaches()
另一种方法是下面的方法,它将提供的属性与现有的可用属性合并
ConfigFactory.invalidateCaches()
val c = ConfigFactory.parseFile(new File(path-to-file + "/" + "application.conf"))
val config : Config = c.withFallback(ConfigFactory.load()).resolve
我认为覆盖属性的最好方法是使用
-D
提供它们。Typesafe赋予系统属性最高优先级,因此-D将覆盖reference.conf和application.conf -Dconfig.file=path/to/config file
由于ConfigFactory上的内部缓存,可能无法工作。文档建议运行ConfigFactory.invalidateCaches()
另一种方法是下面的方法,它将提供的属性与现有的可用属性合并
ConfigFactory.invalidateCaches()
val c = ConfigFactory.parseFile(new File(path-to-file + "/" + "application.conf"))
val config : Config = c.withFallback(ConfigFactory.load()).resolve
我认为覆盖属性的最好方法是使用
-D
提供它们。Typesafe赋予系统属性最高优先级,因此-D将覆盖reference.conf和application.conf 考虑application.conf是属性文件。还有其他选项,可以解决使用属性文件的相同目的
不确定,但使用jar打包属性文件可能无法提供灵活性?在这里,将属性文件与jar打包分开,这将提供灵活性,因为只要有任何属性更改,就只替换新的属性文件,而不是构建和部署整个jar
这可以通过以下方式实现:在属性文件中保留属性,并在属性键前面加上“spark”
Spark Submit命令会是这样的
$spark_submit $spark_params $hbase_params \
--class com.abc.xyz.MYClass \
--properties-file application.conf \
$sandbox_jar flagFile/test.FLG
在代码中获取属性,例如
sc.getConf.get("spark.inputpath") // /input/path
sc.getConf.get("spark.outputpath") // /output/path
不过,不一定能解决你的问题。但这里试着使用另一种方法。考虑application.conf是属性文件。还有其他选项,可以解决使用属性文件的相同目的 不确定,但使用jar打包属性文件可能无法提供灵活性?在这里,将属性文件与jar打包分开,这将提供灵活性,因为只要有任何属性更改,就只替换新的属性文件,而不是构建和部署整个jar 这可以通过以下方式实现:在属性文件中保留属性,并在属性键前面加上“spark” Spark Submit命令就像
$spark_submit $spark_params $hbase_params \
--class com.abc.xyz.MYClass \
--properties-file application.conf \
$sandbox_jar flagFile/test.FLG
在代码中获取属性,例如
sc.getConf.get("spark.inputpath") // /input/path
sc.getConf.get("spark.outputpath") // /output/path
不过,不一定能解决你的问题。但这里试着用另一种方法来解决问题。我不明白你想说什么。我已经提供了这一选择。但它不起作用我错过了你的最后一行代码。对此我很抱歉。我也有类似的问题,我加载了文件并与Config对象合并。请参阅修改后的答案。您是否可以解释要处理
新文件的人
,以便从传递的参数中读取maven@Gaurang,一种方法是将application.conf保存在应用程序根目录中(与jar目录相同)。然后文件路径变成System.getProperty(“user.dir”)
我的意思是。。当我将其作为maven参数传递时。它将如何解读这里的路径。无法理解你想说什么。我已经提供了这一选择。但它不起作用我错过了你的最后一行代码。对此我很抱歉。我也有类似的问题,我加载了文件并与Config对象合并。请参阅修改后的答案。您是否可以解释要处理新文件的人
,以便从传递的参数中读取maven@Gaurang,一种方法是将application.conf保存在应用程序根目录中(与jar目录相同)。然后文件路径变成System.getProperty(“user.dir”)
我的意思是。。当我将其作为maven参数传递时。它将如何读取这里的路径。