我正在处理Hadoop中的压缩文件。每个zip文件包含2000个XML文件。一个映射器需要90到60分钟才能完成过程。我使用的是Windows和6台有12 GB内存的核心机器。
我的问题是:我的进度条只显示过程完成时的结果。在任务完成之前,进度状态为为0%,如下所示

如何务实地更改进度值?
我尝试了以下代码:
InputDocXmlCount++;
if (InputDocXmlCount % 100 == 0)
{
context.progress();
runningJob.mapProgress();
}但我不知道该怎么做?有人能帮我吗?
发布于 2014-01-23 17:22:18
MR框架代码无法决定如何显示百分比,因为(我假设)您使用的是一些特定的InputFormat。显然,框架并不那么聪明,可以为您计算zip中xml文件的数量,并预测您将每100条记录报告一次进度。
不过,请看一看台面先生。您至少可以计算已经处理的xml文件的数量。
发布于 2015-12-30 18:53:02
您没有对进度值的直接控制,但可以考虑通过在映射程序代码中调用TaskAttemptContext#setStatus来实现自定义状态消息。例如,您可以使它成为一个动态消息,包括已处理的XML文件的计数,并定期更新状态字符串中的计数。
https://stackoverflow.com/questions/21309860
复制相似问题