Ошибка теста SBT: java.яз..NoSuchMethodError: чистая.джонц.формате LZ4.LZ4BlockInputStream


Получение ниже исключения, когда я пытался выполнить модульные тесты для моего кода потоковой передачи spark на SBT windows, используя scalatest.

Sbt testOnly <<ClassName>>

*
*
*
*
*
*

2018-06-18 02:39:00 ошибка исполнителя: 91-исключение в задаче 1.0 на этапе 3.0 (TID 11) Ява.яз..NoSuchMethodError: чистая.джонц.формате LZ4.LZ4BlockInputStream.(Ljava / io/InputStream; Z) V около орг."Апач".искры.Ио.LZ4CompressionCodec.compressedInputStream(CompressionCodec.скала:122) в орг.апаш.искра.сериализатор.SerializerManager.wrapForCompression (SerializerManager.scala: 163) в орг.апаш.искра.сериализатор.SerializerManager.wrapStream (SerializerManager.скала: 124) в орг.апаш.искра.шарканье.BlockStoreShuffleReader$ $ anonfun$2.применить (BlockStoreShuffleReader.scala: 50) около орг..апаш.искра.шарканье.BlockStoreShuffleReader$ $ anonfun$2.применить (BlockStoreShuffleReader.scala: 50) в орг.апаш.искра.место хранения.Shufflockfetcheriterator.далее (Shufflockfetcheriterator.scala: 417) в орг.апаш.искра.место хранения.Shufflockfetcheriterator.далее (Shufflockfetcheriterator.скала: 61) в скале.коллекция.Итератор$ $ anon$12.nextCur (итератор.scala: 435) в скале.коллекция.Итератор$ $ anon$12.hasNext (итератор.scala: 441) около скала.коллекция.Итератор$ $ anon$11.hasNext (итератор.scala: 409) в орг.апаш.искра.утиль.CompletionIterator.hasNext (CompletionIterator.скала: 32) в орг.апаш.искра.Прерывающий литератор.hasNext (InterruptibleIterator.скала: 37) в скале.коллекция.Итератор$ $ anon$11.hasNext (итератор.scala: 409) в орг.апаш.искра.язык SQL.катализатор.выражения.GeneratedClass$GeneratedIteratorForCodegenStage1.sort_addToSorter$(неизвестный источник) около орг..апаш.искра.язык SQL.катализатор.выражения.GeneratedClass$GeneratedIteratorForCodegenStage1.processNext (неизвестный источник) в орг.апаш.искра.язык SQL.исполнение.BufferedRowIterator.hasNext (BufferedRowIterator.java: 43) в орг.апаш.искра.язык SQL.исполнение.WholeStageCodegenExec$$anonfun$10$ $ anon$1.hasNext (WholeStageCodegenExec.scala: 614) в орг.апаш.искра.язык SQL.исполнение.GroupedIterator$.применить (GroupedIterator.скала: 29) около орг..апаш.искра.язык SQL.исполнение.струящийся.FlatMapGroupsWithStateExec$StateStoreUpdater.updateStateForKeysWithData (FlatMapGroupsWithStateExec.scala: 176) * *

Попробовал пару вещей, чтобы исключить net.джонц.LZ4 jar( с предложениями из других постов), но опять же ошибка в выводе.

В настоящее время используется spark 2.3, scalatest 3.0.5, Scala версии 2.11 . я вижу эту проблему только после обновления до spark 2.3 и scalatest 3.0.5

Есть предложения ?

1 5

1 ответ:

У Кафки есть конфликтная зависимость с Spark, и это то, что вызвало эту проблему для меня.

Вот как вы можете исключить зависимость в вашем файле sbt

lazy val excludeJpountz = ExclusionRule(organization = "net.jpountz.lz4", name = "lz4")

lazy val kafkaClients = "org.apache.kafka" % "kafka-clients" % userKafkaVersionHere excludeAll(excludeJpountz) // add more exclusions here

Когда вы используете эту зависимость kafkaClients, она теперь исключает проблемную библиотеку lz4.


Обновление: Это, по-видимому, проблема с Кафкой 0.11.x.x и более ранней версией. По состоянию на 1.x.x Кафка, похоже, отошел от использования проблемной библиотеки net.jpountz.lz4. Поэтому, используя последние Кафка (1.x) с последней искрой (2.3.x) не должно быть этой проблемы.