MapReduce只需要一个输出文件时reduce个数问题。
我需要处理一个文件,文件中存放了一个浮点数矩阵,需要对文件中每一个浮点数进行计算,转换成另一个浮点数。输出结果是一个新的矩阵。
我用map将矩阵文件拆分,每个map任务处理一个矩阵的一部分。而输出的时候由于我只需要一个输出文件,所以这个时候我设置reduce个数为1. 但是,你知道,reduce个数为1的时候效率很低的,每个map任务都要把数据传送给这个reduce,体现不出分布式处理的优势了。怎么办?
而如果把reduce个数设置为多个,那么最终我的输出还是需要一个文件,如何合并reduce输出的多个文件为一个?
或者,这样的问题有没有其他方法解决?
[解决办法]
一年多没用这个了。
但是我记得,当时输出文件都是在hdfs文件系统下,每个reduce节点输出的结果都是输出结果的一部分,可以使用hdfs的merge命令将这些文件合并起来。
如果你reduce就是直接放在一个计算节点上做的话,那肯定就只能比较低效的运行了。