reduce个数和生成输出文件个数的关系?
来源:4-17 流量统计实战升级之自定义Partitioner
黄大山9196
2019-08-04
在这个案例中,设置了3个Reducer处理数据(job.setNumReduceTasks(3)),结果就有三个输出文件。是不是意味着自己设置了多少个reduce就会有多少个输出文件?在使用默认partitioner情况下会有多个reduce处理数据,但为什么只生成一个输出文件?
写回答
3回答
-
Suspendz
2019-12-03
查了点资料大概了解了。
是一个reducer对应生成一个单独的文件。之所以之前没有自定义partitioner而只生成了一个文件,是因为hadoop默认的reducer是设置的1,所有mapper都只是发到了一个reducer上,哈希值模1永远只有一个值,所以也就只有一个文件了,这种默认的reducer生成文件少但是牺牲了集群性能,一般很少使用的,老师估计是为了演示而已才没有具体调这些东西。
一般多个reducer会生成多个结果,在hdfs上可以用hadoop fs -getmerge来把文件合并起来(我查到的,没有试验过不确定是不是这样)
00 -
Michael_PK
2019-08-04
默认情况下是根据key的hash code和reduce个数取模出来的
00 -
Michael_PK
2019-08-04
默认多少个reduce就是多少个输出。默认情况下很多个reduce处理?这话的依据是什么?你从哪里看到很多个?
00
相似问题
partion数量的问题
回答 1
reduce输出与输入类型报错
回答 2
reduce和task个数
回答 1
NumReduceTasks的个数问题
回答 1
生产上,存入HDFS的一个文件一般多大?
回答 1