Установка значения счетчика MapReduce на определенное значение

Я не вижу простого способа установить значение счетчика задания MapReduce в самом начале? Также является ли атомарная операция увеличения счетчика среди задач карты/уменьшения?


person kee    schedule 10.05.2012    source источник


Ответы (2)


Не уверен, что вы имеете в виду, устанавливая значение счетчика в начале - вы имеете в виду инициализацию значения счетчика чем-то отличным от 0 (какой вариант использования для этого?).

Что касается атомарной операции, счетчики накапливаются отдельно для каждой задачи. По мере выполнения задач значения счетчиков фиксируются в глобальных итогах (фиксируются только зафиксированные задачи, поэтому, если у вас есть две спекулятивно запущенные задачи, фиксируются только счетчики успешных задач.

person Chris White    schedule 11.05.2012
comment
Да, кроме 0, это то, что я хочу. - person kee; 13.05.2012
comment
Все еще не уверен, почему вы хотите это сделать, но в методе настройки для вашего преобразователя / редуктора вы можете вытащить номер задачи из контекста и установить значение счетчика на какое-то значение, когда идентификатор задачи равен 0 (т.е. первый маппер/редюсер в серии) - person Chris White; 13.05.2012

Либо установите значение при создании счетчика, например:

  private AtomicInteger pages = new AtomicInteger(0);  // total pages fetched

ИЛИ используйте метод incrCounter() в цикле, если вы хотите сделать это позже. (Первая лучше.)

Счетчики поддерживаются задачей, с которой они связаны, и периодически отправляются в средство отслеживания задач, а затем в средство отслеживания заданий, чтобы их можно было глобально агрегировать. Таким образом, каждая задача карты/задача уменьшения будет иметь свою собственную копию переменной счетчика. Если задание выполнено успешно, подсчитывается сумма всех счетчиков и предоставляется в выходной сводке.

person Tejas Patil    schedule 11.05.2012
comment
Не уверен, почему вы используете здесь AtomicInteger, поскольку в задаче, выполняющей вычисления, есть только один поток. - person Thomas Jungblut; 11.05.2012
comment
это был просто пример для OP ... его до OP можно выбрать в соответствии с вариантом использования - person Tejas Patil; 11.05.2012