从apachespark流上下文访问jar中resources目录中的文件

yzxexxkh  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(391)

我编写了一个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群中运行时才会失败。

gzszwxb4

gzszwxb41#

我通过一种不同的方式(也不那么愚蠢)访问资源目录来解决这个问题:

input = MyClass.class.getResourceAsStream("/my file");

相关问题