2016-04-05 30 views
5

Próbuję uruchomić małą aplikację zapłonową i otrzymuję następujący wyjątek:IllegalAccessError do stoper guawy jest z org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus

Exception in thread "main" java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.<init>()V from class org.apache.hadoop.mapreduce.lib.input.FileInputFormat 
    at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus(FileInputFormat.java:262) 
    at org.apache.hadoop.mapreduce.lib.input.CombineFileInputFormat.getSplits(CombineFileInputFormat.java:217) 
    at org.apache.spark.rdd.NewHadoopRDD.getPartitions(NewHadoopRDD.scala:95) 
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:219) 
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:217) 
    at scala.Option.getOrElse(Option.scala:120) 
    at org.apache.spark.rdd.RDD.partitions(RDD.scala:217) 
    at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:32) 
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:219) 
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:217) 
    at scala.Option.getOrElse(Option.scala:120) 

odpowiednie zależności Gradle sekcja:

compile('org.apache.spark:spark-core_2.10:1.3.1') 
compile('org.apache.hadoop:hadoop-mapreduce-client-core:2.6.2') {force = true} 
compile('org.apache.hadoop:hadoop-mapreduce-client-app:2.6.2') {force = true} 
compile('org.apache.hadoop:hadoop-mapreduce-client-shuffle:2.6.2') {force = true} 
compile('com.google.guava:guava:19.0') { force = true } 

Odpowiedz

18

wersja 2.6.2 z hadoop:hadoop-mapreduce-client-core nie mogą być używane razem z guava „nowych wersjach s (próbowałem 17.0 - 19.0) od guava 's StopWatch konstruktor nie mogą być dostępne (powodując powyżej IllegalAccessError)

użyciu hadoop-mapreduce-client-core' s najnowsza wersja - 2.7.2 (w których nie używają guava „s StopWatch w powyższej metodzie raczej używają org.apache.hadoop.util.StopWatch) rozwiązało problem, z dwoma dodatkowymi zależnościami, które były wymagane:

compile('org.apache.hadoop:hadoop-mapreduce-client-core:2.7.2') {force = true} 

compile('org.apache.hadoop:hadoop-common:2.7.2') {force = true} // required for org.apache.hadoop.util.StopWatch 

compile('commons-io:commons-io:2.4') {force = true} // required for org.apache.commons.io.Charsets that is used internally 

uwaga: istnieją dwa org.apache.commons.io pakiety: commons-io:commons-io (nasz TUTAJ), a org.apache.commons:commons-io (stary, 2007). upewnij się, że zawiera poprawny.

2

Wygląda na to, że masz niedopasowanie w wersji Guava.

coś w kodzie próbuje wywołać konstruktora Stopwatch, ale konstruktorzy wyjęto z 17,0 w Guava rzecz, które zostały dodane w Guava 15,0 statycznych metod fabrycznych (createStarted() i createUnstarted()).

Należy zaktualizować kod, który próbuje użyć konstruktorów, aby zamiast tego używać statycznych metod fabrycznych.

+0

Dzięki! Rzeczywiście było to niedopasowanie, musiałem zaktualizować kilka zależności (opisanych poniżej), aby uniemożliwić używanie Stopwatchu guava. – Lika

2

Miałem ten problem ze Spark 1.6.1, ponieważ jedna z naszych dodatkowych zależności wyeksmitowała Guava 14.0.1 i zastąpiła ją 18,0. Spark ma zależność podstawową dla klienta-mufla-2.2. Zobacz [Maven Repo] (https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.10/1.6.1)

Rozwiązanie, które działało do celu jest dodanie SBT libraryDependencies następujące: "org.apache.hadoop" % "hadoop-client" % "2.7.2"

1

w moim przypadku, ze względu na dodanie guava 21.0 wynik w błąd.

<dependency> 
      <groupId>com.google.guava</groupId> 
      <artifactId>guava</artifactId> 
      <version>21.0</version> 
</dependency> 

Po tym, używam guava 15.0 lub usunąć powyższe zależności. Mój kod działa dobrze.

1

Właśnie zmieniłem wersję guava z 19.0 na 15.0 i zadziałało. Obecnie używam wersji iskry 2.2

<dependency> 
     <groupId>com.google.guava</groupId> 
     <artifactId>guava</artifactId> 
     <version>15.0</version> 
     </dependency>