Spark-submit повторно использует предыдущую банку

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

spark-submit --class com.my.namespace.MyJobClass  --master local --deploy-mode client --conf spark.driver.extraClassPath=$(echo ./lib/*.jar | tr ' ' ':')  --verbose    hdfs://tmp/jars/mySparkJob.jar  args 

(Обратите внимание, что я переименовал все имена классов и т. д. в стиль «MyJob», чтобы упростить задачу). Задание отправляется нормально, основной класс разрешается нормально, и я разрешаю все свои зависимости без проблем.

Однако при первом запуске я обнаружил ошибку в MyJobClass. Итак, я исправил это, переупаковал MySparkJob.jar, поместил обратно в HDFS и повторно запустил задание. Однако ошибка остается. Что бы я ни делал, похоже, что SPARK повторно использует мою исходную версию MySparkJob.jar, поэтому я не могу запустить обновленную версию этого jar-файла.

Я использую искру 2.1.0 (версия карты: Running Spark version 2.1.0-mapr-1801)

Я пытался:

  • работает от локальных и кластерных режимов искры
  • декомпиляция jar, чтобы убедиться, что изменение кода существует
  • переименовав банку и запустив ее - по необъяснимым причинам она все еще использует старый код!
  • Используйте как локальную версию, так и версию фиксированной банки на основе hdfs.
  • перезапуск диспетчера ресурсов
  • удаление spark.yarn.archive -> maprfs:///apps/spark/spark-jars.zip

Я чувствую, что должен делать что-то глупое (такое случается!). Мой вопрос (ы):

  • Нужно ли очищать что-либо от искры между заданиями? Если да, то что мне нужно очистить и где это находится?
  • Эффективно ли spark заархивирует мои зависимости и поместит их куда-нибудь? Если да то где?
  • Любые другие наблюдения, которые могут помочь?

person ZenMasterZed    schedule 07.09.2018    source источник
comment
Как я узнал, вы отправляете свою работу из файла jar, расположенного на hdfs. я правда? Если да, то это странное действие. Если вы беспокоитесь о своих зависимостях, вы можете использовать затененный файл jar, чтобы решить эту проблему. После этого попробуйте отправить из JAR-файла, отправленного на главный узел.   -  person Amin Heydari Alashti    schedule 07.09.2018
comment
Как ни странно, у меня возникает аналогичная проблема, но с файлом .py, отправленным с локального диска (не hdfs).   -  person scubbo    schedule 10.05.2019


Ответы (1)


Итак ... во время публикации этого вопроса я подумал, что это не имеет никакого смысла, учитывая все, что я пробовал, и что это должно быть что-то, что я делал неправильно. После проверки банок, которые были включены в папку libs, показалось, что присутствует старый артефакт sbt (код был упакован с sbt universal:stage), который, по-видимому, является старой версией моей основной библиотеки (которая, должно быть, болталась в ivy кеш или что-то в этом роде, но по неизвестным причинам sbt включил его). Поскольку он содержал тот же основной класс, я полагаю, что Spark использовал этот код по сравнению с банкой, которую я отправлял (вероятно, это связано с тем, как разрешаются пути к классам). После удаления этого файла из папки lib моя работа работает нормально и использует более новый код. У меня есть новые проблемы, которые нужно решить сейчас (они разные/разные, поэтому я не буду включать их здесь и запутывать вопрос), но это, по крайней мере, объясняет, почему я наблюдаю это странное поведение.

person ZenMasterZed    schedule 07.09.2018