我的hadoop reducer只在我将原始值写入上下文时才将输出写入上下文

slhcrj9b  于 12个月前  发布在  Hadoop
关注(0)|答案(1)|浏览(242)

我有这个代码:

@Override
protected void reduce(Text key, Iterable<Text> values, Context context)
                throws IOException, InterruptedException {
    Set<String> mySet = new HashSet<>();
    Map<String, String myMap = new HashMap<>();
    for (Text value : values) {
        // context.write(key, value);
        ... 
    }
    for (String str : mySet) {
        if(myMap.containsKey(str)){
            outputValue.set(str + myMap.get(str));
            context.write(key, outputValue);
        }
    }
}

字符串
如果我取消注解了注解行,输出和每个输入值一样被写入。但是,当我注解该行时,输出没有被写入。这可能是什么问题呢?
我只希望输出被写入上下文。

fv2wmkja

fv2wmkja1#

不清楚您期望的是什么,因为在所示代码中,set和map都是空的,并且您的条件为false
Reducer是无状态的,不会在所有示例之间共享数据
迭代值,而不是尝试使用一个新的空集合或Map。或者向其中添加数据,而不是写入上下文,然后重新定义它们(例如,输出唯一值)

相关问题