在我的Map Reduce Java程序中,TokenizerMapper.java程序报告存在类型不匹配。当我尝试从文本文档输出bigrams时,上面的错误发生在行" String temp = itr.nextToken()。toLowerCase(); "报告类型不匹配的位置将void分配给字符串。我的mapper方法的Java代码如下:
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class TokenizerMapper extends Mapper<Object, Text, Text,IntWritable> {
private final IntWritable one = new IntWritable(1);
private Text data = new Text();
public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString(), "-- \t\n\r\f,.:;?![]'\"");
while (itr.hasMoreTokens()) {
String temp = itr.nextToken().toLowerCase();
if(itr.hasMoreTokens()){
temp += "," + itr.nextToken().toLowerCase();
}
data.set(temp);
context.write(data, one);
}
}
}
你能帮我解决一下这个问题吗?该程序确实在不同的系统中工作,但当我尝试从Cloudera虚拟机运行它时会出现问题。
非常感谢。