Arhn - архитектура программирования

NoSuchMethodError — org.apache.spark.util.Utils$.withDummyCallSite

Я пытаюсь запустить задание Spark (Spark 1.4.0) в кластере. Как из командной строки, так и из Eclipse я получаю сообщение об ошибке об отсутствии функции withDummyCallSite в классе Spark Utils. В зависимостях maven я вижу, что загружается spark-core_2.10-1.4.0.jar, который должен включать эту функцию. Я использую Java 1.7, такую ​​же, как и версия Java, для которой ранее был скомпилирован код. На мониторе Spark Master я вижу, что задание запущено, поэтому проблема не в брандмауэре. Вот ошибка, которую я вижу в консоли (как из командной строки, так и из Eclipse):

ERROR 09:53:06,314  Logging.scala:75 -- Task 0 in stage 1.0 failed 4 times; aborting job
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
java.lang.NoSuchMethodError: org.apache.spark.util.Utils$.withDummyCallSite(Lorg/apache/spark/SparkContext;Lscala/Function0;)Ljava/lang/Object;
    at org.apache.spark.sql.parquet.ParquetRelation2.buildScan(newParquet.scala:269)
    at org.apache.spark.sql.sources.HadoopFsRelation.buildScan(interfaces.scala:530)
    at org.apache.spark.sql.sources.DataSourceStrategy$$anonfun$8.apply(DataSourceStrategy.scala:98)
    at org.apache.spark.sql.sources.DataSourceStrategy$$anonfun$8.apply(DataSourceStrategy.scala:98)
    at org.apache.spark.sql.sources.DataSourceStrategy$$anonfun$pruneFilterProject$1.apply(DataSourceStrategy.scala:266)
    at org.apache.spark.sql.sources.DataSourceStrategy$$anonfun$pruneFilterProject$1.apply(DataSourceStrategy.scala:265)
    at org.apache.spark.sql.sources.DataSourceStrategy$.pruneFilterProjectRaw(DataSourceStrategy.scala:296)
    at org.apache.spark.sql.sources.DataSourceStrategy$.pruneFilterProject(DataSourceStrategy.scala:261)
    at org.apache.spark.sql.sources.DataSourceStrategy$.apply(DataSourceStrategy.scala:94)
    at org.apache.spark.sql.catalyst.planning.QueryPlanner$$anonfun$1.apply(QueryPlanner.scala:58)
    at org.apache.spark.sql.catalyst.planning.QueryPlanner$$anonfun$1.apply(QueryPlanner.scala:58)
    at scala.collection.Iterator$$anon$13.hasNext(Iterator.scala:371)
    at org.apache.spark.sql.catalyst.planning.QueryPlanner.plan(QueryPlanner.scala:59)
    at org.apache.spark.sql.catalyst.planning.QueryPlanner.planLater(QueryPlanner.scala:54)
    at org.apache.spark.sql.execution.SparkStrategies$HashAggregation$.apply(SparkStrategies.scala:162)
    at org.apache.spark.sql.catalyst.planning.QueryPlanner$$anonfun$1.apply(QueryPlanner.scala:58)
    at org.apache.spark.sql.catalyst.planning.QueryPlanner$$anonfun$1.apply(QueryPlanner.scala:58)
    at scala.collection.Iterator$$anon$13.hasNext(Iterator.scala:371)
    at org.apache.spark.sql.catalyst.planning.QueryPlanner.plan(QueryPlanner.scala:59)
    at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan$lzycompute(SQLContext.scala:932)
    at org.apache.spark.sql.SQLContext$QueryExecution.sparkPlan(SQLContext.scala:930)
    at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan$lzycompute(SQLContext.scala:936)
    at org.apache.spark.sql.SQLContext$QueryExecution.executedPlan(SQLContext.scala:936)
    at org.apache.spark.sql.DataFrame.collect(DataFrame.scala:1255)
    at org.apache.spark.sql.DataFrame.count(DataFrame.scala:1269)

(Журнал сокращен для краткости)

Заранее спасибо за любые указатели!


Ответы:


1

Пожалуйста, проверьте, как ваш класс разрешается maven с помощью клавиш (CNTR+Shift+T). Убедитесь, что он не разрешен из двух разных банок в вашем пути к классам.

Если на ваш класс ссылается какая-либо из транзитивных зависимостей, добавьте необходимый jar в качестве прямой зависимости, используя нужную вам версию.

Вы можете обратиться к этим ссылкам для получения дополнительной информации.

Тест mockito не дает такой ошибки метода при запуске в качестве теста junit, но когда файлы jar добавляются вручную в конфигурации запуска, он работает хорошо

Исключение в потоке main java.lang.NoSuchMethodError: org.slf4j.impl.StaticLoggerBinder.getSingleton()Lorg/slf4j/impl/StaticLoggerBinder

20.11.2015
  • Спасибо за ответ. Я дважды проверил содержимое spark-core_2.10-1.4.0.jar (загружено через зависимость, указанную в pom.xlm), и функция withDummyCallSite действительно отсутствовала. Я вручную загрузил эту банку с mvnrepository.com и заменил банку, и теперь проблема исчезла. Это точно такая же версия (2.10-1.4.0), не знаю, почему эта функция вообще отсутствовала. 23.11.2015
  • Без проблем! Приятно слышать, что замена банки вручную решила вашу проблему. На самом деле в такой ситуации вы можете напрямую удалить структуру папок вашей зависимости (например, C:/Users/{ваше имя пользователя}/.m2/reposirty/org/apache/spark) из локального cahce/repo. После удаления этого jar-файла maven загружает новую копию из вашего удаленного репозитория, и вы можете получить новую копию указанной версии в своем локальном репозитории. 24.11.2015
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..