我编写了一个java应用程序,作为spark streaming作业,它需要一些文本资源,我已经将这些文本资源包含在jar的资源目录中(使用默认的maven目录结构)。对于单元测试,我访问这些文件没有问题,但是当我用spark submit运行程序时,我得到一个filenotfoundexception。使用spark submit运行时,如何访问jar中类路径上的文件?
我当前用于访问文件的代码大致如下所示:
InputStream input;
try {
URL url = this.getClass().getClassLoader().getResource("my file");
if (url == null) {
throw new IOException("file does not exist");
}
String path = url.getPath();
input = new FileInputStream(path);
} catch(IOException e) {
throw new RuntimeException(e);
}
谢谢。
请注意,这与从jar中读取资源文件(建议这样做)不同,因为此代码在本地运行时有效。它只有在Spark群中运行时才会失败。
1条答案
按热度按时间gzszwxb41#
我通过一种不同的方式(也不那么愚蠢)访问资源目录来解决这个问题: