Ошибка теста 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 ответ:
У Кафки есть конфликтная зависимость с 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) не должно быть этой проблемы.