Hadoop NoSuchMethodError

时间:2015-04-30 15:49:11

标签: java hadoop mapreduce

有没有人知道为什么之前突然开始发生这种错误之前曾经工作过的东西?请帮忙

java.lang.NoSuchMethodError: org.apache.hadoop.mapred.Counters.findCounter(Ljava/lang/Enum;)Lorg/apache/hadoop/mapreduce/Counter;
at edu.umn.cs.spatialHadoop.operations.Sampler.sampleMapReduceWithRatio(Sampler.java:214)
at edu.umn.cs.spatialHadoop.operations.Sampler.sample(Sampler.java:543)
at edu.umn.cs.spatialHadoop.operations.Repartition.packInRectangles(Repartition.java:494)
at edu.umn.cs.spatialHadoop.operations.Repartition.packInRectangles(Repartition.java:463)
at edu.umn.cs.spatialHadoop.operations.Repartition.repartitionLocal(Repartition.java:590)

这已经提前工作但突然开始发出此错误。我正在使用hadoop版本1.2.1

4 个答案:

答案 0 :(得分:0)

来自org/apache/hadoop/mapreduce/Counter我想hadoop-mapreduce-client-core.jar缺少

答案 1 :(得分:0)

Counter课程已包含在hadoop-mapreduce-client-core.jar中。你必须以某种方式降级它。

如果您使用的是构建工具(maven,gradle ...),请检查您的依赖项并确保它们没有更改。如有疑问,请使用最新版本。

否则,请转到hadoop-mapreduce-client-core.jar,然后检查方法是否在内部,或者只是获取更新版本以在项目中替换它。

答案 2 :(得分:0)

这是因为应用程序中可用的最新编译类和依赖jar的版本不同。例如:让类A使用依赖jar X编译,然后在不同环境中使用依赖jar jar编译的类A,其中包含称为Y的新方法。现在该类将被编译,因为当jar X中使用相同的A类时,jar方法中可以使用新方法Y,然后当尝试在类内存中加载类时,它会导致NoSuchMethod异常。在调用真实优先级之前,类加载器在将类加载到类内存中之前执行依赖类的验证。

答案 3 :(得分:0)

所有jar文件都可用。经过一番考虑错误的工作后,我决定重新加载所有内容(即重新加载hadoop文件)。谢谢你们帮助:)