gpt4 book ai didi

hadoop - 来自 org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus 的 guava 秒表的 IllegalAccessError

转载 作者:可可西里 更新时间:2023-11-01 14:09:29 25 4
gpt4 key购买 nike

我正在尝试运行小型 spark 应用程序,但出现以下异常:

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)

相关的 gradle 依赖部分:

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 }

最佳答案

版本2.6.2hadoop:hadoop-mapreduce-client-core不能和guava的新版本一起使用(我尝试了 17.0 - 19.0)因为无法访问 guavaStopWatch 构造函数(导致上面的 非法访问错误)

使用 hadoop-mapreduce-client-core 的最新版本 - 2.7.2(他们不使用 guava)' s StopWatch 在上面的方法中,而不是他们使用 org.apache.hadoop.util.StopWatch)解决了这个问题,需要两个额外的依赖:

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

注意:有两个 org.apache.commons.io 包: commons-io:commons-io (我们这里的),和 org.apache.commons:commons-io (旧的,2007 年)。确保包括正确的。

关于hadoop - 来自 org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus 的 guava 秒表的 IllegalAccessError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36427291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com