Hadoop,Java:上下文。write()不写任何东西
我们正在进行一个Hadoop项目,我们当前的任务是根据食物被吃的时间将食物列表映射到感觉。map阶段工作,reduce阶段生成正确的输出,但调用上下文。具有该输出的write()不会向文件写入任何内容
为了检查键是否有效以及“output”是否实际包含我们希望它写入的文本,我们将字符串打印到系统中。出去,这就是它的本意。什么会导致上下文。write()不写?“文件输出格式计数器”确认未写入任何内容,因为“写入的字节数=8”。我猜这8个字节就是文件名
这是我们的Reducer类,它不会写。样本输出将是“417004瘙痒:虾甜菜诺丽大豆”
public static class HourReducer
extends Reducer<LongWritable, Text, LongWritable, Text> {
private Text output = new Text();
public void reduce(LongWritable key, Iterable<Text> values, Context context) throws IOException, InterruptedException {
Set<String> foods = new HashSet<>();
Set<String> feels = new HashSet<>();
for(Text item : values) {
String[] splitLine = item.toString().split(" ");
if(splitLine[0].equals("food")) {
foods.add(splitLine[1]);
}
else if(splitLine[0].equals("feel")) {
feels.add(splitLine[1]);
}
}
String foodList = "";
for(String food : foods) {
foodList += " " + food;
}
for(String feel : feels) {
System.out.println("WRITING at " + key + ": \"" + feel + ":" + foodList + "\"");
this.output.set(feel + ":" + foodList);
context.write(key, this.output);
}
}
}
共 (0) 个答案