Я не вижу простого способа установить значение счетчика задания MapReduce в самом начале? Также является ли атомарная операция увеличения счетчика среди задач карты/уменьшения?
Установка значения счетчика MapReduce на определенное значение
Ответы (2)
Не уверен, что вы имеете в виду, устанавливая значение счетчика в начале - вы имеете в виду инициализацию значения счетчика чем-то отличным от 0 (какой вариант использования для этого?).
Что касается атомарной операции, счетчики накапливаются отдельно для каждой задачи. По мере выполнения задач значения счетчиков фиксируются в глобальных итогах (фиксируются только зафиксированные задачи, поэтому, если у вас есть две спекулятивно запущенные задачи, фиксируются только счетчики успешных задач.
Либо установите значение при создании счетчика, например:
private AtomicInteger pages = new AtomicInteger(0); // total pages fetched
ИЛИ используйте метод incrCounter()
в цикле, если вы хотите сделать это позже. (Первая лучше.)
Счетчики поддерживаются задачей, с которой они связаны, и периодически отправляются в средство отслеживания задач, а затем в средство отслеживания заданий, чтобы их можно было глобально агрегировать. Таким образом, каждая задача карты/задача уменьшения будет иметь свою собственную копию переменной счетчика. Если задание выполнено успешно, подсчитывается сумма всех счетчиков и предоставляется в выходной сводке.