2012-07-18 67 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

相關問題