尝试激发提交时出现 FileNotFound 异常
FileNotFound Exception when trying to spark submit
我有一个 spark jar,我正试图将其提交到我的本地 spark 实例。 jar 是包,所有配置文件都按照 maven 结构存在于 /resources 文件夹中。
以下是例外情况:
java.io.FileNotFoundException: file:/Users/prime/Desktop/TibcoMsgConsumer-1.0-SNAPSHOT.jar!/config.properties (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
在上述异常中可以观察到的一件事是罐子末尾的 !
标记:TibcoMsgConsumer-1.0-SNAPSHOT.jar!/
如果我从这个 jar 中删除与 spark 相关的部分(Java Spark 上下文)并使其成为一个普通的 Java Jar,我不会遇到任何问题。这里可能出了什么问题?
我反编译了 class,这是我加载文件的方式:
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(this.classLoader.getResource("config.properties").getFile());
private Properties properties = this.propLoader.initProp(this.file);
以下是我 运行 的工作方式:
/spark-submit --conf spark.shuffle.consolidateFiles=true --verbose --class "ril.bigdata.com.Main" --master local[*] ~/Desktop/TibcoMsgConsumer-1.0-SNAPSHOT.jar
我错过了什么?
!
之后的任何东西都在罐子里。它不是在 resources
中寻找 config.properties
,而是在你的 JAR 的根目录中搜索。
File file = new File(this.classLoader.getResource("resources/config.properties").getFile());
这应该可以正常工作。
我有一个 spark jar,我正试图将其提交到我的本地 spark 实例。 jar 是包,所有配置文件都按照 maven 结构存在于 /resources 文件夹中。
以下是例外情况:
java.io.FileNotFoundException: file:/Users/prime/Desktop/TibcoMsgConsumer-1.0-SNAPSHOT.jar!/config.properties (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
在上述异常中可以观察到的一件事是罐子末尾的 !
标记:TibcoMsgConsumer-1.0-SNAPSHOT.jar!/
如果我从这个 jar 中删除与 spark 相关的部分(Java Spark 上下文)并使其成为一个普通的 Java Jar,我不会遇到任何问题。这里可能出了什么问题?
我反编译了 class,这是我加载文件的方式:
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(this.classLoader.getResource("config.properties").getFile());
private Properties properties = this.propLoader.initProp(this.file);
以下是我 运行 的工作方式:
/spark-submit --conf spark.shuffle.consolidateFiles=true --verbose --class "ril.bigdata.com.Main" --master local[*] ~/Desktop/TibcoMsgConsumer-1.0-SNAPSHOT.jar
我错过了什么?
!
之后的任何东西都在罐子里。它不是在 resources
中寻找 config.properties
,而是在你的 JAR 的根目录中搜索。
File file = new File(this.classLoader.getResource("resources/config.properties").getFile());
这应该可以正常工作。