Параметр 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 драйвера и исполнителя. Глобусы разрешены.
Убедитесь, что ваши банки доступны в исполнителях.