0

我是 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));
        }

    }

}

有人可以告诉我哪里出错并建议解决问题

4

2 回答 2

2

尝试像这样满足您的 Mapper 参数:

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

public void map(LongWritable key, Text values, OutputCollector output, Reporter reporter)
于 2013-09-19T00:16:43.800 回答
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();
    }
}
于 2013-09-19T00:23:18.177 回答