Правда... это обсуждалось довольно много.
Однако существует много двусмысленности, и некоторые из предоставленных ответов... включая дублирование ссылок на баночку в конфигурации баннеров/исполнителей/драйверов или параметров.
Неопределенные и/или опущенные детали
После каждой двусмысленности следует уточнить неясные и/или пропущенные подробности для каждого варианта:
- Как влияет ClassPath
- Driver
- Исполнитель (для выполнения задач)
- И
- нет вообще
- Символ разделения: запятая, двоеточие, точка с запятой
- Если предоставленные файлы автоматически распределяются
- для задач (каждому исполнителю)
- для удаленного драйвера (если он запущен в режиме кластера)
- принят тип URI: локальный файл, hdfs, http и т.д.
- Если скопировано в общее место, где это место (hdfs, local?)
Параметры, на которые это влияет:
-
--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=...
- Не забывайте, что последний параметр spark-submit также является файлом .jar.
Я знаю, где я могу найти основную документацию по искрениям, а именно как отправить, options, а также 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
Найдена хорошая статья о ответе на другое сообщение. Однако ничего нового не научилось. Плакат делает хорошее замечание о различии между локальным драйвером (пряжа-клиент) и удаленным драйвером (пряжа-кластер). Определенно важно иметь в виду.