Доступ к счетчику преобразователя из редуктора

Мне нужно получить доступ к счетчикам из моего сопоставителя в моем редукторе. Это возможно? Если да, то как это делается?

Например: мой преобразователь:

public class CounterMapper extends Mapper<Text,Text,Text,Text> {

    static enum TestCounters { TEST }

    @Override
    protected void map(Text key, Text value, Context context)
                    throws IOException, InterruptedException {
        context.getCounter(TestCounters.TEST).increment(1);
        context.write(key, value);
    }
}

Мой редуктор -

public class CounterReducer extends Reducer<Text,Text,Text,LongWritable> {

    @Override
    protected void reduce(Text key, Iterable<Text> values, Context context)
                        throws IOException, InterruptedException {
        Counter counter = context.getCounter(CounterMapper.TestCounters.TEST);
        long counterValue = counter.getValue();
        context.write(key, new LongWritable(counterValue));
    }
}

counterValue всегда равен 0. Я что-то делаю неправильно или это просто невозможно?

12
задан kichik 15 March 2013 в 19:18
поделиться