Я пытаюсь написать программу mapreduce, в которой функция map добавляет элементы в HashMap, а редуктор затем получает доступ к этим элементам и записывает их для вывода.
public class MyClass {
static HashMap<String, Integer> temp = new HashMap<String, Integer>();
public static class Map1 extends Mapper<LongWritable, Text, Text, IntWritable> {
public void map(LongWritable key, Text value, Context context) {
temp.put("1", 1);
}
}
public static class Reduce1 extends Reducer<Text, IntWritable, Text, Text> {
@Override
public void reduce(Text key, Iterable<IntWritable> values, Context context) {
Iterator it = temp.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, Integer> pair = (Map.Entry<String, Integer>)it.next();
String key = pair.getKey();
String val = Integer.toString(pair.getValue());
context.write(new Text(key), new Text(val));
}
}
}
Компилируется нормально, но выход редуктора пустой. Я не очень хорош в Java, поэтому я не совсем уверен, что здесь происходит.