我运行的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);
代码运行良好。看起来只是导致错误的文件加载。
答案 0 :(得分:1)
将代码构建到jar中后,文件路径将不再可用于访问文件。相反,您需要使用类似<YourClassName>.class.getResourceAsStream("/my_file.txt")
的方法来获取InputStream
。