Spark-submit повторно использует предыдущий jar - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь запустить простую работу с помощью 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, поэтому я не могу запустить обновленную версию этого фляги.

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

Я пытался:

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

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

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

1 Ответ

0 голосов
/ 07 сентября 2018

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

...