我有这个代码:
@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);
}
}
}
字符串
如果我取消注解了注解行,输出和每个输入值一样被写入。但是,当我注解该行时,输出没有被写入。这可能是什么问题呢?
我只希望输出被写入上下文。
1条答案
按热度按时间fv2wmkja1#
不清楚您期望的是什么,因为在所示代码中,set和map都是空的,并且您的条件为false
Reducer是无状态的,不会在所有示例之间共享数据
迭代值,而不是尝试使用一个新的空集合或Map。或者向其中添加数据,而不是写入上下文,然后重新定义它们(例如,输出唯一值)