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



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

为了知道一个RecordWriter已经完成,可以使用RecordWriter的关闭方法,但当所有RecordWriter都完成时,执行一些清理操作呢?

您可以使用驱动程序本身进行最终清理,而不是依赖OutputFormat。我怀疑它是否真的提供了这样的功能(api)。finalize方法可能是最后的手段,但根本不可取。

JobwaitForCompletion方法仅在作业完成后返回。所以简单地做:

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();

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

相关内容

  • 没有找到相关文章

最新更新