Статический объект на карте / уменьшить - PullRequest
1 голос
/ 22 марта 2011

Я пытался использовать статический объект в hadoop. Этот объект используется как на карте, так и в уменьшении. Моя программа:

  1. читать 100000 строк, то есть 100000 карт.
  2. для каждого сопоставителя, статический атрибут этого объекта плюс 1.
  3. для каждого редуктора этот статический атрибут записывается как значение редуктора, то есть V2 в

Результат теста таков: статический объект в маппере был очищен перед запуском редуктора. Более того, статические объекты в редукторе, по-видимому, не идентичны среди разных средств отслеживания задач, поэтому результат разных редукторов не может быть накоплен.

У меня вопрос: как я могу использовать статический объект и сохранять его идентичность среди разных средств отслеживания задач?

1 Ответ

3 голосов
/ 22 марта 2011

По умолчанию каждый маппер и редуктор работает в своей собственной JVM, поэтому статика не будет глобальной для всего кластера.Если вы хотите накапливать глобальные значения, используйте счетчики Hadoop:

reporter.incrCounter("My custom counters", "my counter", 1);
...