该类型必须实现继承的抽象方法Reducer.reduce(Object,Iterator,OutputCollector,Reporter)

时间:2013-05-15 14:39:35

标签: mapper

我是Hadoop的新手,这是我的第一个Hadoop程序。

我正在尝试创建一个名为WordMapper的Mapper类,但它会抛出以下错误。

WordMapper类型必须实现继承的抽象方法Mapper.map(Object,Object,OutputCollector,Reporter)

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 个答案:

答案 0 :(得分:2)

尝试像这样完成Mapper参数:

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

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

答案 1 :(得分: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();
    }
}