我用Java編寫了一個Spark作業。這項工作被打包爲一個陰影罐子和執行:Java中的Spark作業:如何在羣集上運行時訪問「resources」中的文件
spark-submit my-jar.jar
在代碼中,有駐留在src/main/resources/templates
一些文件(Freemarker的模板)。當本地運行,我能夠訪問的文件:
File[] files = new File("src/main/resources/templates/").listFiles();
當作業在集羣上運行,執行前一行時,返回一個空指針異常。
如果我跑jar tf my-jar.jar
我可以看到文件被封裝在一個文件夾templates/
:
[...]
templates/
templates/my_template.ftl
[...]
我只是無法閱讀;我懷疑.listFiles()
嘗試訪問羣集節點上的本地文件系統,並且這些文件不在那裏。
我很想知道我應該如何打包文件以在自包含的Spark作業中使用。我寧願不在工作之外將它們複製到HDFS,因爲它維護起來很麻煩。
你能告訴你的主人是什麼嗎?以及您正在使用的部署模式? – user1314742