我试图将我的项目从spark 2.1.1升级到2.3.1,当我改变依赖关系时,出现以下异常:
java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.<init>()V from class org.apache.hadoop.mapred.FileInputFormat
at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:312)
at org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:200)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:253)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:251)
at scala.Option.getOrElse(Option.scala:121)
...
我发现了以下问题,似乎可以回答正在发生的事情: IllegalAccessError to guava's StopWatch from org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus
但是我没有直接链接到hadoop,我只是使用spark-2.3.1-bin-hadoop2.7作为我的Spark Home。
我的假设是在spark 2.1.1中隐含地包含了番石榴,但是现在还没有,并且尚未更新hadoop,这是否意味着我现在需要从我的项目中显式包括番石榴?
答案 0 :(得分:0)
在pom.xml文件中添加Google的Guava依赖项15.0。
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>15.0</version>
</dependency>