Путь к банкам добавлен в задание Spark - spark-submit

Я использую Spark 2.1 (BTW) в кластере YARN.

Я пытаюсь загрузить JAR в кластер YARN и использовать их для замены на месте (всегда на месте) Spark JAR.

Я пытаюсь сделать это через искру-отправку.

Вопрос Добавить банки в задание Spark - spark-submit - и соответствующие ответы - полны интересных моментов.

Один из полезных ответов следующий:

spark-submit --jars additional1.jar,additional2.jar \
  --driver-class-path additional1.jar:additional2.jar \
  --conf spark.executor.extraClassPath=additional1.jar:additional2.jar \
  --class MyClass main-application.jar

Итак, я понимаю следующее:

  • --jars предназначен для загрузки jar на каждый узел
  • --driver-class-path используется для использования загруженного jar-файла для драйвера.
  • --conf spark.executor.extraClassPath предназначен для использования загруженного jar-файла для исполнителей.

Пока я осваиваю пути к файлам для --jars в команде spark-submit, какие пути к файлам загруженного JAR будут использоваться, например, в --driver-class-path?

В документе говорится: JAR и файлы копируются в рабочий каталог для каждого SparkContext на узлах исполнителя

Хорошо, но что я должен поставить вместо XXX и YYY для следующей команды?

spark-submit --jars /a/b/some1.jar,/a/b/c/some2.jar \
  --driver-class-path XXX:YYY \
  --conf spark.executor.extraClassPath=XXX:YYY \
  --class MyClass main-application.jar

При использовании spark-submit, как я могу ссылаться на рабочий каталог для SparkContext, чтобы сформировать путь к файлу XXX и YYY?

Спасибо.

PS: я пробовал

spark-submit --jars /a/b/some1.jar,/a/b/c/some2.jar \
  --driver-class-path some1.jar:some2.jar \
  --conf spark.executor.extraClassPath=some1.jar:some2.jar  \
  --class MyClass main-application.jar

Безуспешно (если я не ошибся)

И я также пробовал:

spark-submit --jars /a/b/some1.jar,/a/b/c/some2.jar \
  --driver-class-path ./some1.jar:./some2.jar \
  --conf spark.executor.extraClassPath=./some1.jar:./some2.jar  \
  --class MyClass main-application.jar

И безуспешно.


person dmdevito    schedule 12.11.2020    source источник


Ответы (1)


spark-submit по умолчанию использует клиентский режим.

В клиентском режиме не следует использовать --jars вместе с --driver-class-path.

--driver-class-path перезапишет исходный путь к классам вместо добавления к нему, как можно было бы ожидать.

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

Похоже, что в кластерном режиме --driver-class-path игнорируется.

person theaws.blog    schedule 10.02.2021