JavaでSparkジョブを書きました。ジョブが斜線ジャーとしてパッケージ化されて実行される:コードでJavaのスパークジョブ:クラスタ上で実行されたときに 'リソース'からファイルにアクセスする方法
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()
がクラスタノードのローカルファイルシステムにアクセスしようとしていると考えています。ファイルはそこにありません。
自己完結したスパークジョブでファイルをどのようにパッケージ化するべきかを知りたいのですが、興味があります。私はむしろHDFSにコピーしないでください。なぜなら、それはメンテナンスが面倒ですから。
あなたのマスターは何ですか?どのモードを使用していますか? – user1314742