gpt4 book ai didi

java - Java 中的 Spark 作业 : how to access files from 'resources' when run on a cluster

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:03:02 24 4
gpt4 key购买 nike

我用 Java 编写了一个 Spark 作业。该作业被打包为一个阴影 jar 并执行:

spark-submit my-jar.jar

在代码中,有一些文件(Freemarker 模板)驻留在src/main/resources/templates 中。在本地运行时,我可以访问文件:

File[] files = new File("src/main/resources/templates/").listFiles();

作业在集群上运行时,上一行执行时返回空指针异常。

如果我运行 jar tf my-jar.jar 我可以看到文件打包在 templates/ 文件夹中:

 [...]
templates/
templates/my_template.ftl
[...]

我只是无法阅读它们;我怀疑 .listFiles() 试图访问集群节点上的本地文件系统,但文件不在那里。

我很想知道应该如何打包文件以在独立的 Spark 作业中使用。我不想在工作之外将它们复制到 HDFS,因为维护起来会很麻烦。

最佳答案

您现有的代码将它们引用为未打包并发送到 Spark 节点的文件。但是,由于它们在您的 jar 文件中,您应该能够通过 Foo.getClass().getResourceAsStream("/templates/my_template_ftl") 引用它们。有关 Java 资源流的更多信息,请访问:http://www.javaworld.com/article/2077352/java-se/smartly-load-your-properties.html

关于java - Java 中的 Spark 作业 : how to access files from 'resources' when run on a cluster,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36680766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com