好的,所以我尝试运行我的程序并出现此错误:
java.lang.RuntimeException:java.lang.NoSuchMethodException:org。(..)。SimpleMapReducePricing $ SimplePricingMapper。()
这意味着我必须使用构造函数初始化我的mapper,对吧? 所以,我的问题是为什么我必须这样做,(因为我没有在任何例子中看到它),我怎么能以简单(noob)的方式做到这一点? 我正在使用新的api,我的代码如下:
public class SimplePricingMapper
extends Mapper<Object, Text, Text, DoubleWritable>
{ public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
依旧......
P.S。我看到了类似的问题,但我必须承认这些答案让我更加困惑。 谢谢!
答案 0 :(得分:1)
我没有看到您的代码的上下文,但根据您的异常消息,Mapper
似乎是inner class
中的嵌入类(或所谓的SimpleMapReducePricing
)。
如果没有Mapper
的实例,Hadoop无法实例化SimpleMapReducePricing
,因此您应该将Mapper
类定义为静态。
public static class SimplePricingMapper
我还怀疑你的SimpleMapReducePricing
中嵌入了一个reducer,所以你也应该将它定义为静态。