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来把文件合并起来(我查到的,没有试验过不确定是不是这样)

0
0

Michael_PK

2019-08-04

默认情况下是根据key的hash code和reduce个数取模出来的

0
0

Michael_PK

2019-08-04

默认多少个reduce就是多少个输出。默认情况下很多个reduce处理?这话的依据是什么?你从哪里看到很多个?

0
0

Hadoop 系统入门+核心精讲

从Hadoop核心技术入手,掌握数据处理中ETL应用,轻松进军大数据

2397 学习 · 902 问题

查看课程