[英]Flink : Load resource file in cluster mode
我正在运行一个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);
}
然后,将从文本文件的内容创建的对象用于创建“源”和“接收器”,并在地图函数中进行一些内部计算。
如何在群集模式下正确加载此文件?
编辑:
当我将上面的代码替换为
myObject = new MyClassParser().parse(FILE_CONTENT_AS_STRING);
代码运行良好。 看起来只是导致错误的文件加载。
将代码构建到jar中后,文件路径将不再可用于访问文件。 相反,您需要使用类似<YourClassName>.class.getResourceAsStream("/my_file.txt")
来获取InputStream
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.