【发布时间】:2019-12-11 07:21:01
【问题描述】:
我使用的是 spark 2.4.1 版本和 java8。 我正在尝试在使用 spark-submit 提交我的 spark 作业时加载外部属性文件。
因为我使用下面的 TypeSafe 来加载我的属性文件。
<groupId>com.typesafe</groupId>
<artifactId>config</artifactId>
<version>1.3.1</version>
在我使用的代码中
public static Config loadEnvProperties(String environment) {
Config appConf = ConfigFactory.load(); // loads my "resouces" folder "application.properties" file
return appConf.getConfig(environment);
}
为了将这个“application.properties”文件外部化,我按照专家的建议尝试了这个,而 spark-submit 如下所示
spark-submit \
--master yarn \
--deploy-mode cluster \
--name Extractor \
--jars "/local/apps/jars/*.jar" \
--files /local/apps/log4j.properties \
--files /local/apps/applicationNew.properties \
--class Driver \
--conf spark.driver.extraJavaOptions=-Dconfig.file=./applicationNew.properties \
--conf spark.executor.extraJavaOptions=-Dconfig.file=./applicationNew.properties \
--conf spark.driver.extraJavaOptions=-Dlog4j.configuration=log4j.properties \
--conf spark.executor.extraJavaOptions=-Dlog4j.configuration=log4j.properties \
--conf spark.driver.extraJavaOptions=-Dlog4j.debug \
--conf spark.driver.extraClassPath=. \
migration-0.0.1.jar sit
我将“log4j.properties”和“applicationNew.properties”文件放置在我运行 spark-submit 的同一文件夹中。
1)如果我保留在上面的shell脚本中
--files /local/apps/log4j.properties, /local/apps/applicationNew.properties \
错误:
Exception in thread "main" org.apache.spark.SparkException: Cannot load main class from JAR file:/local/apps//applicationNew.properties
at org.apache.spark.deploy.SparkSubmitArguments.error(SparkSubmitArguments.scala:657)
那么这里有什么问题呢?
2) 然后我改变了上面的脚本,如图所示,即
--files /local/apps/log4j.properties \
--files /local/apps/applicationNew.properties \
当我运行 spark 作业时,我会收到以下错误。
19/08/02 14:19:09 INFO yarn.ApplicationMaster: Final app status: FAILED, exitCode: 13, (reason: User class threw exception: com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'sit'
at com.typesafe.config.impl.SimpleConfig.findKeyOrNull(SimpleConfig.java:152)
那么这里有什么问题?为什么不加载 applicationNew.properties 文件?
3) 当我如下调试时 即打印“config.file”
String ss = System.getProperty("config.file");
logger.error ("config.file : {}" , ss);
错误:
19/08/02 14:19:09 ERROR Driver: config.file : null
19/08/02 14:19:09 ERROR yarn.ApplicationMaster: User class threw exception: com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'sit'
那么如何从 spark-submit 设置“config.file”选项?
如何修复上述错误并从外部 applicationNew.properties 文件加载属性?
【问题讨论】:
-
试试这个,
--driver-java-options -Dconfig.file=./path/conf.file -
@Lamanus 您使用的是哪个版本的 spark ?我的是 2.4.1 ...不,相同的错误 19/08/02 16:40:12 错误驱动程序:config.file:null 19/08/02 16:40:12 错误 yarn.ApplicationMaster:用户类抛出异常:com .typesafe.config.ConfigException$Missing:没有找到键“坐”的配置设置
-
2.4.x 有效,但我的只有一个配置文件。 --files 在我的情况下不起作用。
-
@Lamanus 我可以删除其他 --file 来检查它是否有效,executor java 选项呢?
-
我没有也从未见过那种选项。
标签: apache-spark