在Hadoop中,是否有一种明智的方法来编写大量的输出文件?我一直在使用MultipleOutputs。但是,MultipleOutputs为每个文件分配一个大的(~1MB)缓冲区,因此我遇到了内存问题。
我的数据的排序是这样的,在任何给定的reducer中,我可以写入目标文件,关闭它,然后继续下一个。不幸的是,MultipleOutputs没有公开关闭给定文件的方法。我已经编写了一个修改过的MultipleOutputs,它公开了这样一个方法,并处理了这个问题,但这看起来并不理想。
替代方案是将输出拆分为所需文件的最后一步,但我不确定这样做的好方法。
答案 0 :(得分:1)
每个reducer都会生成一个输出文件,更多的是no。减速机更多的没有。 o / p文件和较小的大小。
可能你可以限制你的号码。减速器 但要确保优化有限的减速器。
e.g。如果设置reducers = 1,则只有1个进程必须处理所有映射器数据,因此会增加处理时间。