1

我运行了一个应用程序,Spark cluster但它给了我error这样的结果:

     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)

有人可以告诉我如何解决吗?

4

2 回答 2

3

不兼容的 Google Guava 库版本位于其运行时类路径中。我建议澄清这种情况的类型并解决它:

案例一:项目依赖问题

当您使用 Maven 时,maven dependency:tree可以告诉您库中的所有依赖项。如果您看到多个 Google Guava 版本,请通过将<exclusion>标签添加到依赖于不兼容的 Guava 版本的库依赖项来解决此问题。

案例 2:运行时环境中的问题

如果您的依赖项是正确的,那么问题出在您的运行时环境的 CLASSPATH 中,其中不兼容的 Google Guava 库版本位于所需版本之前。虽然我没有尝试过,但我看到 spark 有实验spark.files.userClassPathFirst配置(下面的链接)。这可能会解决您的问题。 https://spark.apache.org/docs/1.1.0/configuration.html

于 2014-11-25T05:10:38.350 回答
0

这里的问题是火花使用旧的番石榴版本 - 14.0.1。看起来你们中的一些依赖项带来了更新版本的番石榴。只需在您的构建工具中强制使用 14.0.1 就可以了

于 2014-11-22T02:48:59.573 回答