Правда ... это обсуждалось довольно много.
Тем не менее, существует много двусмысленности и некоторые ответы, включая дублирование ссылок на jar в конфигурации или опциях jars / executor / driver.
После неоднозначности неясные и / или пропущенные детали должны быть уточнены для каждого варианта:
--jars
SparkContext.addJar(...)
метод SparkContext.addFile(...)
метод --conf spark.driver.extraClassPath=...
или --driver-class-path ...
--conf spark.driver.extraLibraryPath=...
или --driver-library-path ...
--conf spark.executor.extraClassPath=...
--conf spark.executor.extraLibraryPath=...
Мне известно, где можно найти документацию по основной искре и, в частности, информацию о , как отправить , доступные опции , а также JavaDoc . Однако это оставило для меня еще несколько пробелов, хотя и частично ответило.
Я надеюсь, что это не так уж и сложно, и что кто-то может дать мне четкий и краткий ответ.
Если судить по документации, кажется, что методы --jars
, а также методы SparkContext
, addJar
и addFile
будут автоматически распространять файлы, тогда как другие опции просто изменяют ClassPath.
Можно было бы с уверенностью предположить, что для простоты я могу добавить дополнительные файлы jar приложения, используя 3 основных параметра одновременно:
spark-submit --jar additional1.jar,additional2.jar \
--driver-library-path additional1.jar:additional2.jar \
--conf spark.executor.extraLibraryPath=additional1.jar:additional2.jar \
--class MyClass main-application.jar
Нашел хорошую статью в , ответ на другая публикация . Однако ничего нового не узнал. Постер хорошо отмечает разницу между локальным драйвером (клиент-пряжа) и удаленным драйвером (кластер пряжи). Определенно важно помнить.