Чтобы подать заявку Спарк в кластер, их документация Примечания:Apache Spark - с помощью искрового представить бросает NoSuchMethodError
Чтобы сделать это, создайте сборочный банку (или «убер» сосуд), содержащий ваши кода и его зависимостей. Оба sbt и Maven имеют сборные плагины. При создании сборочных банок укажите Spark и Hadoop в качестве предоставленных зависимостей; их не нужно связывать, поскольку они предоставляются менеджером кластера во время выполнения. - http://spark.apache.org/docs/latest/submitting-applications.html
Итак, я добавил тени плагин Apache Maven для моей pom.xml
файла. (версия 3.0.0)
И я превратил сферу своей Spark в provided
. (Версия 2.1.0)
(Я также добавил Apache Maven Assembly плагин, чтобы гарантировать, что я обмотать все мои зависимостями в банке, когда я бегу mvn clean package
. Я уверен, если это действительно необходимо.)
Таким образом, как spark-submit
не удается. Он выбрасывает NoSuchMethodError
для зависимости, которую я имею (обратите внимание, что код работает из локального экземпляра при компиляции внутри IntelliJ, предполагая, что provided
удален).
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Stopwatch.createStarted()Lcom/google/common/base/Stopwatch;
Строка кода, который бросает ошибку не имеет значения - это просто первая линия в моей основной метод, который создает Stopwatch
, часть утилит Google гуавы. (версия 21.0)
Другие решения в Интернете предполагают, что это связано с конфликтами версий Guava, но мне еще не удалась с этими предложениями. Любая помощь будет оценена, спасибо.
Спасибо, добавив раздел 'relocation' в плагин для тени, исправил ошибку. Кроме того, я смог удалить плагин сборки, и он все еще работал нормально. –