Формат Hadoop Custom Output, когда заканчиваются все редукторы?

Я создаю собственный формат вывода для hadoop, и мне было интересно, есть ли способ в формате вывода узнать, когда все редукторы (RecordWriters) завершены?

Чтобы узнать, что один RecordWriter завершен, можно использовать метод close RecordWriter, но как насчет выполнения некоторой очистки, когда все RecordWriter завершат работу?

1 ответ

Вы можете использовать сам драйвер для окончательной очистки вместо того, чтобы полагаться на OutputFormat, Я сомневаюсь, действительно ли он предоставляет такую ​​функцию (API). finalize метод может быть последним средством, но не рекомендуется вообще.

waitForCompletion метод Job возвращается только после завершения работы. Так что просто сделайте это как:

boolean status = job.waitForCompletion(true); 
if(status){
     // clean up required for successful jobs
} else {
     // clean up required for failed jobs
}

Если ваша очистка не имеет отношения к успеху / провалу работы, просто удалите if-else часть. И если вам действительно нужен метод в вашем OutputFormat класс, чтобы сделать удаление, сделать это static, например:

job.waitForCompletion(true);
CustomOutputFormat.cleanUp();

Надеюсь, этого должно хватить твоей потребности.

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