Медленный запуск мапперов после редуктора

Я использую ChainReducer для создания следующего шаблона

Map1 --> Reduce --> Map2 

Я хочу, чтобы шаг Map2 начинался только после завершения шага сокращения. Есть ли свойство в карте hadoop, чтобы установить это.


person Pradeep    schedule 10.05.2016    source источник


Ответы (1)


Вам следует сделать следующее:

ChainMapper.addMapper(generalConf, Map1.class, ..., new JobConf(false));
ChainReducer.setReducer(generalConf, Reduce.class, ..., new JobConf(false));
ChainReducer.addMapper(generalConf, Map2.class, ..., true, new JobConf(false));
// execute the job with generalConf

Приведенный выше код гарантирует, что выполнение Map2 начнется только после завершения Reduce.

person Serhiy    schedule 11.05.2016
comment
Я использовал тот же код. второй преобразователь не ждет завершения работы редуктора. второй маппер начнет обработку по мере того, как редьюсер записывает данные и не ждет завершения - person Pradeep; 14.05.2016
comment
@ user1690436 Вы уверены, что передаете одну и ту же конфигурацию в ChainMapper и ChainReducer? Не могли бы вы опубликовать эту часть вашего кода? - person Serhiy; 17.05.2016