1

我正在运行一个简单的地图并减少Hadoop工作。该属性mapred.reduce.tasks已由Hadoop管理员在mapred-site.xml文件中设置。说它是 25。现在,我的工作只产生 4 个不同的键,所以 25 个part-r-xxxx文件中只有 4 个是非空的,其余的是空文件。我该如何防止这种情况?我只想要与生成的密钥数量一样多的输出文件(我事先不知道)。

谢谢。

4

2 回答 2

1

我建议使用LazyOutputFormat

LazyOutputFormat.setOutputFormatClass(job, TextOutputFormat.class);

这将确保仅当该 reducer 有一些实际数据时才创建您的输出文件。

于 2013-07-31T18:11:07.020 回答
0

或者你也可以重写 FileOutputCommitter 的 needsTaskCommit() 函数。

查看Chris 的博客以实现这一目标。

于 2013-07-31T18:14:02.877 回答