Hadoop映射器构造函数,何时以及如何?

时间:2012-07-18 15:28:07

标签: java eclipse hadoop mapreduce

好的,所以我尝试运行我的程序并出现此错误:

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。我看到了类似的问题,但我必须承认这些答案让我更加困惑。 谢谢!

1 个答案:

答案 0 :(得分:1)

我没有看到您的代码的上下文,但根据您的异常消息,Mapper似乎是inner class中的嵌入类(或所谓的SimpleMapReducePricing)。

如果没有Mapper的实例,Hadoop无法实例化SimpleMapReducePricing,因此您应该将Mapper类定义为静态。

public static class SimplePricingMapper 

我还怀疑你的SimpleMapReducePricing中嵌入了一个reducer,所以你也应该将它定义为静态。