Формат 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();
Надеюсь, этого должно хватить твоей потребности.