2012-07-18 71 views
0

好了,所以我试图运行我的程序,但此错误出现了:Hadoop映射器构造函数的时间和方式?

了java.lang.RuntimeException:java.lang.NoSuchMethodException:。组织(..)SimpleMapReducePricing $ SimplePricingMapper()

这意味着我必须用构造函数初始化我的映射器,对吧? 所以,我的问题是为什么我必须这样做(因为我没有在任何示例中看到过),我怎样才能以简单的方式做到这一点? 我使用新的API,和我的一段代码如下:

public class SimplePricingMapper 
    extends Mapper<Object, Text, Text, DoubleWritable> 
    { public void map(Object key, Text value, Context context 
     ) throws IOException, InterruptedException { 

等等...

附:我看到了类似的问题,但我必须承认,答案让我更困惑。 谢谢!

回答

1

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

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

public static class SimplePricingMapper 

我也怀疑你有嵌入到你的SimpleMapReducePricing减速,所以你也应该把它定义静态的。

+0

先生,你已经帮了我很大的忙。我的文凭现在离有一天更近了!谢谢。 – sl1789 2012-07-18 15:47:53

+1

没问题,随时接受答案;) – 2012-07-18 15:50:09

相关问题