有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案