首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hadoop NoSuchMethodError

Hadoop NoSuchMethodError
EN

Stack Overflow用户
提问于 2015-04-30 23:49:11
回答 4查看 1.2K关注 0票数 0

有没有人知道为什么以前可以工作的东西突然出现这个错误?请帮帮忙

代码语言:javascript
复制
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

EN

回答 4

Stack Overflow用户

发布于 2015-04-30 23:57:31

org/apache/hadoop/mapreduce/Counter中,我猜hadoop-mapreduce-client-core.jar丢失了

票数 0
EN

Stack Overflow用户

发布于 2015-05-01 00:12:47

hadoop-mapreduce-client-core.jar中包含Counter类。你一定是以某种方式降低了它的等级。

如果你正在使用一个构建工具(maven,gradle...),检查你的依赖关系,确保它们没有改变。如有疑问,请使用最新版本。

否则,请转到您的hadoop-mapreduce-client-core.jar并检查该方法是否在内部,或者只是在您的项目中获得一个更新的版本来替换它。

票数 0
EN

Stack Overflow用户

发布于 2015-05-01 00:40:22

这是因为应用程序中可用的最新编译类和依赖jar的版本不同。例如:让A类用依赖的jar X编译,然后用依赖的jar X1在不同的环境中编译相同的A类,其中包含名为Y的新方法。现在类将被编译,因为新的方法Y在jar X1中可用,当在jar X的环境中使用相同的类A时,当试图在类内存中加载类时,它会导致NoSuchMethod异常。Classloader先验证依赖类,然后再将类加载到类内存中,然后再调用真正的exceution。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29972297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档