社区首页 > Hadoop > mapreduce中 comb...

mapreduce中 combiner 合并文件,默认是一次合并多少个文件啊?

来自: 不走寻常路

回复量:4

创建时间: 2017-02-23 11:00

hadoop 中mapreduce 在map阶段 spill出来的文件如果有5000个,那么combiner合并的时候,默认是多少个文件一起合并啊?

这个可以设置不?


0

4 回复

咖灰 1F 2017-02-23 14:21:35

mapreduce.job.maps

回复 赞(
渙撒的眸光 2F 2017-02-23 16:11:50

combiner是根据条件来合并的。应该是不能设置的。

回复 赞(
博弈人生 3F 2017-02-24 09:03:53

源代码    org.apache.hadoop.mapred.MapTask.MapOutputBuffer   中的init方法中启动了一个SpillThread守护线程,然后调用了一个方法sortAndSpill();  

if (spstart != spindex) {

                combineCollector.setWriter(writer);

                RawKeyValueIterator kvIter =

                  new MRResultIterator(spstart, spindex);

                combinerRunner.combine(kvIter, combineCollector);

              }

combine方法是注释为:Run the combiner over a set of inputs.


回复 赞(
老男孩 4F 2017-02-24 11:04:17

以分区为单位合并,多轮次递归合并,每次合并io.sort.factor个。。。默认100

回复 赞(
发表回复