有人知道为什么以前工作的东西突然出现这种错误吗?请帮忙
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条答案
按热度按时间xtfmy6hx1#
Counter
课程包含在hadoop-mapreduce-client-core.jar
. 你一定是把它降级了。如果您使用的是构建工具(maven、gradle…),请检查您的依赖项并确保它们没有更改。如有疑问,请使用最新版本。
否则,去你的房间
hadoop-mapreduce-client-core.jar
或者检查方法是否在内部,或者只获取一个更新的版本来替换项目中的方法。z0qdvdin2#
这是因为应用程序中可用的最新编译类和依赖jar的版本不同。例如:让类a用依赖JARx编译,然后在不同的环境中用依赖JARx1编译相同的类a,其中包含一个称为y的新方法。现在将编译该类,因为jarx1中提供了新方法y,当在jarx所在的环境中使用相同的类a时,在尝试将该类加载到类内存中时,会导致nosuchmethod异常。classloader在调用real execution之前,先在类内存中加载类,然后再验证依赖类。
kqhtkvqz3#
从
org/apache/hadoop/mapreduce/Counter
我猜hadoop-mapreduce-client-core.jar
缺少y53ybaqx4#
一切都是可用的所有jar文件和所有。在一个疲惫不堪的工作后,我决定重新加载所有东西(即重新加载hadoop文件)。感谢你们的帮助:)