2013-05-15 33 views
0

我是新來的Hadoop,這是我第一次的Hadoop項目。的類型必須實現繼承的抽象方法Reducer.reduce(對象,迭代器,OutputCollector,記者)

我試圖創建一個名爲WordMapper一個映射器類,但它拋出是下面的錯誤。

類型WordMapper必須實現繼承的抽象方法Mapper.map(對象,對象,OutputCollector,記者)

public class WordMapper extends MapReduceBase implements Mapper 
{ 
    public void map(WritableComparable key, Writable values, OutputCollector output, Reporter reporter) throws IOException 
    { 
     String line=values.toString(); 
     StringTokenizer tok=new StringTokenizer(line); 
     while(tok.hasMoreTokens()) 
     { 
      String t=tok.nextToken(); 
      output.collect(new Text(t), new IntWritable(1)); 
     } 

    } 

} 

有人可以告訴我在哪裏,我錯了,並建議克服的問題

回答

2

儘量滿足你這樣的映射參數:

public class WCMapper extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> 

public void map(LongWritable key, Text values, OutputCollector output, Reporter reporter) 
1

您沒有提供任何類型的參數。 Mapper是一個通用接口;它使用輸入和輸出鍵和值類型的類型參數進行參數化。填寫K1V1K2V2在下面的代碼類型,您需要:

public class WordMapper extends MapReduceBase implements Mapper<K1, V1, K2, V2> { 
    public void map(K1 key, 
        V1 value, 
        OutputCollector<K2, V2> output, 
        Reporter reporter) 
      throws IOException { 
     whatever(); 
    } 
} 
相關問題