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 ライブラリ バージョンが、ランタイム クラス パスで先行しています。このケースのタイプを明確にし、それに取り組むことをお勧めします。

ケース 1: プロジェクトの依存関係の問題

Maven を使用しているmaven dependency:treeため、ライブラリ内のすべての依存関係を確認できます。<exclusion>複数の Google Guava バージョンが表示される場合は、互換性のない 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

ここでの問題は、spark が古い guava バージョン (14.0.1) を使用していることです。依存関係の一部が新しいバージョンのグアバをもたらすようです。ビルドツールで強制的に14.0.1を使用するだけで、すべて問題ありません

于 2014-11-22T02:48:59.573 に答える