spark程序依赖guava冲突报错

在练习 spark 读取本地文件的过程中,遇到了这样的问题:

Exception in thread "main" 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)
    at org.apache.spark.rdd.RDD.partitions(RDD.scala:251)
    at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:46)
    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)
    at org.apache.spark.rdd.RDD.partitions(RDD.scala:251)
    at org.apache.spark.SparkContext.runJob(SparkContext.scala:2099)
    at org.apache.spark.rdd.RDD$anonfun$collect$1.apply(RDD.scala:945)
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112)
    at org.apache.spark.rdd.RDD.withScope(RDD.scala:363)
    at org.apache.spark.rdd.RDD.collect(RDD.scala:944)
    at org.apache.spark.api.java.JavaRDDLike$class.collect(JavaRDDLike.scala:361)
    at org.apache.spark.api.java.AbstractJavaRDDLike.collect(JavaRDDLike.scala:45)
    at com.baidu.devprofile.mysql.service.SparkSql.readFile(SparkSql.java:39)
    at com.baidu.devprofile.Application.main(Application.java:13)
18/12/17 20:00:00 INFO SparkContext: Invoking stop() from shutdown hook

问题原因:
一般来说这样的问题是因为 pom 文件中有 google 的 guava 依赖吧?或者其他地方引用到了。 这个问题就是 guava 冲突了,版本不一致。所以大家优先去 pom 文件中排查。

有可能你会发现POM中并没有任何问题,那就去依赖包管理界面,比如idea的external Libraries查看依赖的jar是否有guava,我的项目里面能看见有一个19版本的

这个貌似和spark不兼容,需要低版本到的guava,在pom里面添加一个15版本的,再次运行,发现没问题了。

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

查了很久没找到具体原因,只知道是版本不合适。

为什么spark没有默认引入guava的包了?很疑惑,求大神赐教

猜你喜欢

转载自blog.csdn.net/tianhouquan/article/details/85055169
今日推荐