Параметр spark.executor.extraClassPath устанавливается программно через SparkConf

Фляги моего проекта конфликтуют с флягами, которые находятся на EMR, поэтому, чтобы исправить это, я скопировал все свои продвинутые фляги в пользовательское местоположение узлов через скрипт начальной загрузки. Я подтвердил, что файлы jar были скопированы на все узлы исполнителя.

Он отлично работает с spark-submit, мой code ссылаясь на новые банки, которые находятся в пользовательской папке всех узлов.

/usr/bin/spark-submit --conf="spark.driver.extraClassPath=/usr/customJars/*" --conf="spark.executor.extraClassPath=/usr/customJars/*"  

То же самое я хочу реализовать программно в коде, обновляя объект sparkconf.

sparkConf.set("spark.driver.extraClassPath", "/usr/customJars/*");
sparkConf.set("spark.executor.extraClassPath", "/usr/customJars/*"); 

это не работает, когда я хочу реализовать программно. мой code не ссылается на обновленные банки в пользовательском расположении.

Любое предложение?

0 ответов

Большинство свойств нельзя изменить во время выполнения в Spark.

Вы можете увидеть документацию для SparkConf: SparkConf

Как только SparkConf передается конструктору SparkContext, значения клонируются и не могут быть изменены. Это ограничение Spark.

Вам необходимо убедиться, что вы остановили и запустили свой сеанс Spark, прежде чем тестировать новые изменения свойств.

В качестве дополнительного комментария из документации: Spark Configuration

За spark.executor.extraClassPath:

Дополнительные записи пути к классам для добавления к пути к классам исполнителей. Это существует главным образом для обратной совместимости со старыми версиями Spark. Пользователи обычно не должны устанавливать эту опцию.

Ты можешь использовать spark.jars что повлияет на водителя и исполнителей:

Разделенный запятыми список jar-файлов для включения в classpath драйвера и исполнителя. Глобусы разрешены.

Убедитесь, что ваши банки доступны в исполнителях.

Другие вопросы по тегам