我是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));
}
}
}
有人可以告诉我哪里出错了并建议克服这个问题
答案 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
是一个通用接口;它使用输入和输出键和值类型的类型参数进行参数化。使用您需要的类型填写以下代码中的K1
,V1
,K2
和V2
:
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();
}
}