Flink:以集群模式加载资源文件

时间:2019-07-04 09:09:17

标签: java apache-flink

我运行的Flink代码在本地执行时(在IntelliJ中)运行良好,但是在Flink集群中运行时崩溃:

org.apache.flink.client.program.ProgramInvocationException: The main method caused an error.

在初始化工作时,我加载一个文本文件,该文件嵌入到我的jar文件中,代码如下:

try (InputStream is = new FileInputStream(new File("src/main/resources/my_file.txt"))) {
            myObject = new MyClass.Parser().parse(is);
}catch (final Exception e) {
            LOGGER.error("Error while trying to file : "+e.getMessage(), e);
}

从文本文件的内容创建的对象然后用于创建我的Source和Sink,还用于在map函数中进行一些内部计算。

如何在群集模式下正确加载此文件?

编辑:

当我用

替换上面的代码时
myObject = new MyClassParser().parse(FILE_CONTENT_AS_STRING);

代码运行良好。看起来只是导致错误的文件加载。

1 个答案:

答案 0 :(得分:1)

将代码构建到jar中后,文件路径将不再可用于访问文件。相反,您需要使用类似<YourClassName>.class.getResourceAsStream("/my_file.txt")的方法来获取InputStream