web-dev-qa-db-ja.com

SBTテストエラー:Java.lang.NoSuchMethodError:net.jpountz.lz4.LZ4BlockInputStream

以下の例外を取得、私はspark scalatestを使用してSBTウィンドウでストリーミングコードのユニットテストを実行しようとしたとき。

sbt testOnly <<ClassName>>

*
*
*
*
*
*

2018-06-18 02:39:00 ERROR Executor:91-ステージ3.0(TID 11)のタスク1.0の例外Java.lang.NoSuchMethodError:net.jpountz.lz4.LZ4BlockInputStream。(Ljava/io/InputStream; Z)V org.Apache.spark.io.LZ4CompressionCodec.compressedInputStream(CompressionCodec.scala:122)at org.Apache.spark.serializer.SerializerManager.wrapForCompression(SerializerManager.scala:163)at org.Apache.spark.serializer.SerializerManager.wrapStream (SerializerManager.scala:124)org.Apache.spark.shuffle.BlockStoreShuffleReader $$ anonfun $ 2.apply(BlockStoreShuffleReader.scala:50)at org.Apache.spark.shuffle.BlockStoreShuffleReader $$ anonfun $ 2.apply(BlockStoreShuffleReader.scala :50)org.Apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:417)at org.Apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:61)at scala.collection.Iterator $$ anon scala.collection.Iterator $$ anon $ 12.hasNext(Iterator.scala:441)at scalaで$ 12.nextCur(Iterator.scala:435)。 collection.Iterator $$ anon $ 11.hasNext(Iterator.scala:409)at org.Apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:32)at org.Apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala: 37)scala.collection.Iterator $$ anon $ 11.hasNext(Iterator.scala:409)at org.Apache.spark.sql.catalyst.expressions.GeneratedClass $ GeneratedIteratorForCodegenStage1.sort_addToSorter $(Unknown Source)at org.Apache.spark .org.Apache.spark.sql.execution.BufferedRowIterator.hasNext(BufferedRowIterator.Java:43)at org.Apache.spark.sql.execution.WholeStageCodegenExec $の.sql.catalyst.expressions.GeneratedClass $ GeneratedIteratorForCodegenStage1.processNext(Unknown Source) org.Apache.spark.sql.execution.GroupedIterator $ .apply(GroupedIterator.scala:29)at org.Apache.spark.sql.execution.streamingの$ anonfun $ 10 $$ anon $ 1.hasNext(WholeStageCodegenExec.scala:614) .FlatMapGroupsWithStateExec $ StateStoreUpdater.updateStateForKeysWithData(FlatMapGroupsWithStateExec.scala:176)**

Net.jpountz.lz4 jar(他の投稿からの提案を含む)を除外するためにいくつかのことを試みましたが、ここでも出力に同じエラーがありました。

現在spark 2.3、scalatest 3.0.5、Scala 2.11 versionを使用しています。この問題は、spark 2.3およびscalatest 3.0.5

助言がありますか ?

13
KK2486

KafkaはSparkと競合する依存関係があり、それが私にとってこの問題の原因です。

exclude 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ライブラリが除外されます。


更新:これは、Kafka 0.11.x.x以前のバージョン。 1.x.x Kafkaは、問題のあるnet.jpountz.lz4 としょうかん。したがって、最新のKafka(1.x)と最新のSpark(2.3.x)を使用すると、この問題は発生しません。

24
marios