我正在运行一个简单的地图并减少Hadoop
工作。 mapred.reduce.tasks
管理员已在Hadoop
文件中设置了属性mapred-site.xml
。说它是25.现在,我的工作只生成4个不同的密钥,因此25个part-r-xxxx
文件中只有4个非空,其余为空文件。我该如何防止这种情况?我只想要生成多少个输出文件和生成的密钥数量(我之前不知道)。
感谢。
答案 0 :(得分:1)
我建议使用LazyOutputFormat
:
LazyOutputFormat.setOutputFormatClass(job, TextOutputFormat.class);
这将确保仅在存在该减速器的某些实际数据时才创建输出文件。
答案 1 :(得分:0)
或者您也可以覆盖FileOutputCommitter的needsTaskCommit()函数。
选中此blog by Chris即可实现这一目标。