我在 Spark 集群
上运行了一个应用程序,但它给了我这样一个错误
:
14/11/20 21:59:08 WARN TaskSetManager: Lost task 11.0 in stage 0.0 (TID 64, spark1): java.lang.NoSuchMethodError: com.google.common.io.ByteStreams.limit(Ljava/io/InputStream;J)Ljava/io/InputStream; org.apache.spark.util.collection.ExternalAppendOnlyMap$DiskMapIterator.nextBatchStream(ExternalAppendOnlyMap.scala:456)
org.apache.spark.util.collection.ExternalAppendOnlyMap$DiskMapIterator.<init> (ExternalAppendOnlyMap.scala:428) org.apache.spark.util.collection.ExternalAppendOnlyMap.spill(ExternalAppendOnlyMap.scala:235) org.apache.spark.util.collection.ExternalAppendOnlyMap.insertAll(ExternalAppendOnlyMap.scala:150)
org.apache.spark.Aggregator.combineValuesByKey(Aggregator.scala:58)
org.apache.spark.shuffle.hash.HashShuffleReader.read(HashShuffleReader.scala:48)
org.apache.spark.rdd.ShuffledRDD.compute(ShuffledRDD.scala:92)
org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:262)
org.apache.spark.rdd.RDD.iterator(RDD.scala:229)
org.apache.spark.rdd.MappedRDD.compute(MappedRDD.scala:31)
org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:262)
org.apache.spark.rdd.RDD.iterator(RDD.scala:229)
org.apache.spark.rdd.MappedRDD.compute(MappedRDD.scala:31)
org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:262)
org.apache.spark.rdd.RDD.iterator(RDD.scala:229)
org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:62)
org.apache.spark.scheduler.Task.run(Task.scala:54)
org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:177)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
java.lang.Thread.run(Thread.java:745)
有人可以告诉我如何解决吗?
最佳答案
不兼容的 Google Guava 库版本在其运行时类路径之前。我建议澄清这种情况的类型并解决它:
案例一:项目依赖问题
当您使用 Maven 时,maven dependency:tree
可以告诉你库中的所有依赖项。如果您看到多个 Google Guava 版本,请通过添加 <exclusion>
来修复该问题标记依赖于不兼容的 Guava 版本的库依赖项。
案例二:运行环境问题
如果您的依赖项是正确的,那么问题出在您的运行时环境的 CLASSPATH 中,其中 Google Guava 库的不兼容版本先于所需版本。虽然我没试过这个,但我看到 spark 有实验性的 spark.files.userClassPathFirst
配置(下面的链接)。这可能会解决您的问题。
https://spark.apache.org/docs/1.1.0/configuration.html
关于java - Spark 应用程序上的 NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27041640/