Hadoop自定义输出格式,何时所有减速器都结束?

时间:2014-11-11 01:43:53

标签: java hadoop mapreduce reduce outputformat

我正在为hadoop构建一个自定义输出格式,并想知道输出格式中是否有一种方法可以知道所有Reducer(RecordWriters)何时完成?

为了知道一个RecordWriter已经完成,可以使用RecordWriter的close方法,但是当所有RecordWriters完成时执行一些清理呢?

1 个答案:

答案 0 :(得分: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();

我希望这应该满足你的需要。