2014-01-23 3 views
1

Я обрабатываю zip-файлы в Hadoop. Каждый zip-файл содержит 2000 файлов XML. Один обработчик примет от 90 до 60 минут, чтобы завершить процесс. Я использую Windows и 6-ядерную машину с 12 ГБ оперативной памяти.Прогресс Mapper в Hadoop для выполнения задачи

Мой вопрос: Моя полоса прогресса показывает только результат при завершении процесса. Статус прогресса не быть 0% до завершения задачи ниже

enter image description here

Как я могу прагматично изменить значение прогресса?

Я попытался следующий код:

InputDocXmlCount++; 
if (InputDocXmlCount % 100 == 0) 
{ 
    context.progress(); 
    runningJob.mapProgress(); 
} 

Но я не знаю, как это сделать? Может кто-нибудь мне помочь?

ответ

1

Код рамки MR не может решить, как показывать процент, потому что (я предполагаю) вы используете какой-то определенный InputFormat. Очевидно, что структура не настолько умна, чтобы подсчитывать количество xml-файлов в zip для вас и прогнозировать, что вы будете сообщать о прогрессе один раз на 100 записей.

Однако взгляните на счетчики МР. Вы можете, по крайней мере, подсчитать количество xml-файлов, которые вы уже обработали

0

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

Смежные вопросы