Указание типов текста / строки в качестве значения для счетчиков Hadoop - PullRequest
2 голосов
/ 29 октября 2011

Текущие методы для установки / увеличения счетчиков hadoop принимают только значения long.

Например: increment(long incr) и setValue(long value) - это два метода, которые я извлек из Javadocs Hadoop.

Мое требование - хранить более сложный тип информации как часть счетчиков (как пары ключ / значение). Эта информация может содержать (string, string) ключ, пары значений.

Как мне добиться этого с помощью счетчиков Hadoop? Если это невозможно, существует ли какая-либо другая структура данных / объект в Hadoop / MR, которая позволяет хранить такую ​​разную информацию, которую можно было бы получить позже, указав job_id и т.д.

Спасибо, Params

Ответы [ 2 ]

1 голос
/ 29 октября 2011

Счетчики работают, потому что счет является суммой. Каждое задание имеет свой счетчик, который можно агрегировать выше. Строка не совсем такого же типа информации (как вы увеличиваете строку?).

Проверьте ZooKeeper для этого. Это отлично подходит для хранения различной информации и координации между процессами. Вы можете создать znode, представляющий запуск задания (возможно, job_id?), А затем иметь отдельные строки в качестве дочерних.

0 голосов
/ 29 октября 2011

Поскольку счетчики Hadoop поддерживают только строки, пары ключ / значение можно использовать для сбора статистики, используя OutputCollector.collect (K, V) на карте и уменьшая функции.

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

...