Hadoop получить фактическое количество картографов

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

Я знаю, что установка числа картографов - это всего лишь подсказка, но как определить фактическое количество картографов? Я попробовал следующее в методе настройки моего Mapper:

public void configure(JobConf conf) {
    System.out.println("map tasks: "+conf.get("mapred.map.tasks"));
    System.out.println("tipid: "+conf.get("mapred.tip.id"));
    System.out.println("taskpartition: "+conf.get("mapred.task.partition"));
}

Но я получаю результаты:

map tasks: 1
tipid: task_local1204340194_0001_m_000000
taskpartition: 0
map tasks: 1
tipid: task_local1204340194_0001_m_000001
taskpartition: 1

что означает (?), что есть две задачи карты, а не только одна, как напечатано (что вполне естественно, так как у меня есть два небольших входных файла). Разве число после задач карты не должно быть 2?

Сейчас я просто подсчитываю количество файлов во входной папке, но это не очень хорошее решение, так как файл может быть больше, чем размер блока, и привести к нескольким входным разбиениям и, следовательно, к сопоставителям. Какие-либо предложения?

2 ответа

Решение

Наконец, кажется, что conf.get("mapred.map.tasks")) Работает ли в конце концов, когда я генерирую исполняемый файл JAR и запускаю свою программу в кластере / локально. Теперь вывод "картографических задач" правильный.

Это не сработало только при локальном запуске моей программы mapreduce на hadoop из eclipse-plugin. Возможно, это проблема затмения-плагина.

Я надеюсь, что это поможет кому-то еще с той же проблемой. Спасибо за ответ!

Я не думаю, что есть простой способ сделать это. Я реализовал свой собственный класс InputFormat, если вы сделаете это, вы сможете реализовать метод для подсчета количества InputSplits, которые вы можете запросить в процессе, который запускает задание. Если вы введете этот номер в какой-либо параметр конфигурации, вы можете прочитать его в процессе отображения.

Кстати, количество входных файлов не всегда равно количеству картографов, так как большие файлы могут быть разделены.

Другие вопросы по тегам