在我的Java代码中,我想删除这些任务,因为我认为它们在我的程序中浪费了太多时间。我尝试使用XML文件,但它不工作:
<property>
<name>mapreduce.job.committer.setup.cleanup.needed</name>
<value>false</value>
请告诉我如何用任何方式做到这一点?我认为2个任务没有必要。这样对吗??感谢所有!
我相信你没有在mapred-config.xml中正确使用/设置属性。你可以试着做以下两件事:
1) 重写OutputCommitter
类,在setupJob
和cleanupJob
方法中不做。
public static class NoSetupCleanupOutputCommitter extends OutputCommitter {
@Override
public void setupJob(JobContext jobContext) { }
@Override
public void cleanupJob(JobContext jobContext) { }
}
然后在run()
中设置它,如下所示:
conf.setOutputCommitter(NoSetupCleanupOutputCommitter.class);
2)您可以尝试在Java代码中设置正确的配置,如下所示:
//either one of the following configs should do according to the hadoop's version:
conf.setBoolean("mapred.committer.job.setup.cleanup.needed", false);
conf.setBoolean("mapreduce.job.committer.task.cleanup.needed", false);