生成适当数量的减速器输出



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

谢谢。

我建议使用LazyOutputFormat:

LazyOutputFormat.setOutputFormatClass(job, TextOutputFormat.class);

这将确保只有在存在该reducer的一些实际数据时才创建输出文件。

或者您也可以覆盖FileOutputCommitter的needsTaskCommit()函数。

查看Chris的博客可以实现这一点。

相关内容

  • 没有找到相关文章

最新更新