を使用して K8s クラスターで実行しようとしている、Java で記述された非常に小さな Spark アプリケーションがありますspark-submit
。/opt/spark/jars/my.jar
Spark バイナリ、必要なすべての依存関係を含む uber-JAR ファイル ( )、および構成ファイル ( ) を使用してイメージをビルドしました/opt/spark/conf/some.json
。
私のコードでは、私は
SparkSession session = SparkSession.builder()
.appName("myapp")
.config("spark.logConf", "true")
.getOrCreate();
Path someFilePath = FileSystems.getDefault().getPath("/opt/spark/conf/some.json");
String someString = new String(Files.readAllBytes(someFilePath));
readAllBytes
Spark ドライバーからこの例外を取得します。
java.nio.file.NoSuchFileException: /opt/spark/conf/some.json
/opt/spark/conf/some.json
Docker イメージを手動で実行すると、期待どおりにファイルが確実に表示されます。私の Spark ジョブはルートとして実行されるため、ファイルのアクセス許可は問題になりません。
ファイルが実際に存在する同じ Docker イメージがドライバー (およびエグゼキューターですが、その時点までは到達していません) を開始するために使用されるため、アプリケーションでファイルを使用できるはずです。そうではありませんか?ファイルが表示されないのはなぜですか?