hadoop自定义输出格式,所有的reducer何时结束?

jc3wubiy  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(344)

我正在为hadoop构建一个定制的输出格式,我想知道在输出格式中是否有一种方法可以知道所有的reducer(recordwriter)何时都完成了?
为了知道一个recordwriter已经完成,可以使用recordwriter的close方法,但是当所有的recordwriter都完成时,执行一些清理呢?

7tofc5zh

7tofc5zh1#

您可以使用驱动程序本身来执行最终清理,而不是依赖 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();

我希望这能满足你的需要。

相关问题