Когда я использую Java API-клиент в своем приложении и подключаюсь к кластеру Spark, параметр spark.executor.extraClassPath игнорируется.
Я установил параметр в spark-defaults.conf:
spark.executor.extraClassPath /absolute/path/my-jar.jar
Я думал, что объявление его в файле spark-defaults.conf позволит мне не кодировать его жестко в моем Java-приложении.
Жесткое кодирование вынуждает меня объявлять все мои банки с абсолютным путем, зная, что они не на той же машине, на которой работает мое приложение.
Я написал код для игры с наборами данных и получения результатов в моем Java-приложении:
SparkConf sparkConfig = new SparkConf().setAppName("HelloWorldApp")
.setMaster("spark://my.cluster.master:7077")
.set("spark.submit.deployMode", "cluster")
// It works when I set this programmatically
// but exception is thrown when I don't do it
.set("spark.executor.extraClassPath", "/remote/node/absolute/path/my-jar.jar");
SparkSession sparkSession = SparkSession.builder().config(sparkConfig).getOrCreate();
// Here I start playing with datasets to return some results
Когда я не жестко кодирую «spark.executor.extraClassPath» в своем приложении, spark-default.conf также игнорируется.
Это нормальное поведение? Я что-то пропустил?