#java #scala #apache-spark #jackson-databind
#java #scala #apache-spark #jackson-привязка данных
Вопрос:
У меня возникают проблемы при попытке заставить Spark загружать, читать и запрашивать файл parquet. Инфраструктура, похоже, настроена (Spark standalone 3.0), ее можно увидеть, и она будет выполнять задания.
Проблема, с которой я сталкиваюсь, заключается в вызове этой строки
Dataset<Row> parquetFileDF = sparkSession.read().parquet(parquePath);
выдается следующая ошибка
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Scala module 2.10.0 requires Jackson Databind version >= 2.10.0 and < 2.11.0
at com.fasterxml.jackson.module.scala.JacksonModule.setupModule(JacksonModule.scala:61)
Я изучил JacksonModule.setupModule
, и когда он дойдет до context.getMapperVersion
передаваемой версии, это 2.9.10. Мне кажется, что DefaultScalaModule использует какую-то более старую версию.
Я использую Gradle для сборки и настройки зависимостей как таковых
implementation 'com.fasterxml.jackson.core:jackson-core:2.10.0'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.10.0'
implementation 'org.apache.spark:spark-core_2.12:3.0.0'
implementation 'org.apache.spark:spark-sql_2.12:3.0.0'
implementation 'org.apache.spark:spark-launcher_2.12:3.0.0'
implementation 'org.apache.spark:spark-catalyst_2.12:3.0.0'
implementation 'org.apache.spark:spark-streaming_2.12:3.0.0'
Это не сработало, поэтому я попытался принудительно привязать данные
implementation ('com.fasterxml.jackson.core:jackson-databind') {
version {
strictly '2.10.0'
}
}
Я перепробовал несколько разных версий и все еще продолжаю сталкиваться с этой проблемой. Возможно, я упускаю что-то очень простое, но прямо сейчас я, похоже, не могу преодолеть эту ошибку.
Любая помощь будет оценена.
Комментарии:
1. Вероятно, вы можете получить дополнительную помощь, если добавите вывод
gradle dependencies
(или./gradlew dependencies
если вы используете оболочку).
Ответ №1:
Я смог разобраться в проблеме. Я извлекал файл jar из другого проекта. Функциональность в файле jar вообще не использовалась, поэтому она не вызывала подозрений. К сожалению, этот проект не был обновлен, и были некоторые старые библиотеки Spark, которые каким-то образом подбирались моим текущим запущенным приложением. Как только я удалил это, ошибка исчезла. Интересно то, что график зависимостей ничего не показывал о библиотеках, которые использовал другой файл jar.
Я полагаю, если вы столкнетесь с подобной проблемой, дважды проверьте все импортируемые файлы jar.