我有以下Mapper
private Text sentiment = new Text();
public void map(LongWritable key, Text value, OutputCollector<Text, Text> output, Reporter reporter)
throws IOException {
String allPages = value.toString();
String[] tokens = allPages.split(":::");
for(int i=0;i<(tokens.length-1);i++)
{
String articleID="";
sentiment.set(tokens[i].trim());
articleID = tokens[0].trim();
System.out.println("articleID "+articleID);
Text articleIDValue = new Text(articleID);
output.collect(sentiment,articleIDValue);
}
String line = "";
for(int j=1;j<tokens.length;j++){
line = line + " "+tokens[j];
System.out.println("line.... "+line);
}
Text lineText = new Text(line.trim());
output.collect(new Text(tokens[0]),lineText);
}
示例输入:abc:::在一个充斥着科技IPO的市场上,这次不同。应该将keyValue对存储为(abc,在一个充斥着科技IPO的市场中,这一个不同。)
现在这个存储为(abc,abc)我哪里错了
我怀疑您看到的是第一个collect()调用的结果,其中键和值都是从token[0]("abc")设置的。