先看源码:

    numPartitions = conf.getNumReduceTasks();
if (numPartitions > 1) { //设置了ReduceTask个数后(大于1),默认通过下面的getPartition()对数据进行分区
partitioner = (Partitioner<K,V>)
ReflectionUtils.newInstance(conf.getPartitionerClass(), conf);
} else {
partitioner = new Partitioner<K,V>() {
@Override
public void configure(JobConf job) { }
@Override
public int getPartition(K key, V value, int numPartitions) {
return numPartitions - 1; //默认情况下,ReduceTask个数为1,此时只有一个分区 即partition 0
} //默认分区是根据key的hashcode对ReduceTasks个数取余得到的,用户无法控制哪个key存储到哪个分区

public int getPartition(K key, V value,
int numReduceTasks) {
          return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks;
       }

结论:

1.ReduceTask的数量由job提交时的参数决定:job.setNumReduceTasks()。设置为多少,就开启多少个ReduceTask,默认为1。设置为0时,则表示没有Reduce阶段,只有Map阶段。生成文件数量由ReduceTask数量决定。

2.Partitioner的数量由ReduceTask的数量决定,Partitioner数量 =ReduceTask数量。

其中:  1)若ReduceTask = 1 ,无论用户有没有自定义分区规则,都只有一个分区。

     2)若设置ReduceTask >1,则 如果用户没有自定义Partitioner,则按照默认的HashPartitioner对数据进行划分。

                  如果用户自定义了Partitioner,则其中的分区的个数不能超过Partittion的数量,否则会 Exception。

Partition和ReduceTask的关系的更多相关文章

  1. Spark中的partition和block的关系

    hdfs中的block是分布式存储的最小单元,类似于盛放文件的盒子,一个文件可能要占多个盒子,但一个盒子里的内容只可能来自同一份文件.假设block设置为128M,你的文件是250M,那么这份文件占3 ...

  2. 深入了解Kafka【五】Partition和消费者的关系

    1.消费者与Partition 以下来自<kafak权威指南>第4章. 假设主题T1有四个分区. 1.1.一个消费者组 1.1.1.消费者数量小于分区数量 只有一个消费者时,消费者1将收到 ...

  3. Spark RDD概念学习系列之rdd的依赖关系彻底解密(十九)

    本期内容: 1.RDD依赖关系的本质内幕 2.依赖关系下的数据流视图 3.经典的RDD依赖关系解析 4.RDD依赖关系源码内幕 1.RDD依赖关系的本质内幕 由于RDD是粗粒度的操作数据集,每个Tra ...

  4. Spark名词解释及关系

    随着对spark的业务更深入,对spark的了解也越多,然而目前还处于知道的越多,不知道的更多阶段,当然这也是成长最快的阶段.这篇文章用作总结最近收集及理解的spark相关概念及其关系. 名词 dri ...

  5. Hadoop(17)-MapReduce框架原理-MapReduce流程,Shuffle机制,Partition分区

    MapReduce工作流程 1.准备待处理文件 2.job提交前生成一个处理规划 3.将切片信息job.split,配置信息job.xml和我们自己写的jar包交给yarn 4.yarn根据切片规划计 ...

  6. 大数据学习笔记之Hadoop(三):MapReduce&YARN

    文章目录 一 MapReduce概念 1.1 为什么要MapReduce 1.2 MapReduce核心思想 1.3 MapReduce进程 1.4 MapReduce编程规范(八股文) 1.5 Ma ...

  7. 大数据技术之Hadoop(MapReduce)

    第1章 MapReduce概述 1.1 MapReduce定义 1.2 MapReduce优缺点 1.2.1 优点 1.2.2 缺点 1.3 MapReduce核心思想 MapReduce核心编程思想 ...

  8. Mapreduce之排序&规约&实战案例

    MapReduce 排序和序列化 简单介绍 ①序列化 (Serialization) 是指把结构化对象转化为字节流②反序列化 (Deserialization) 是序列化的逆过程. 把字节流转为结构化 ...

  9. Hadoop详解(05) – MapReduce

    Hadoop详解(05) – MapReduce MapReduce概述 定义 MapReduce是一个分布式运算程序的编程框架,是用户 "基于Hadoop的数据分析应用" 开发的 ...

  10. kafka性能参数和压力测试揭秘

    转自:http://blog.csdn.net/stark_summer/article/details/50203133 上一篇文章介绍了Kafka在设计上是如何来保证高时效.大吞吐量的,主要的内容 ...

随机推荐

  1. VS2010插件NuGet

    下载地址 NuGet Package Manager - Visual Studio Marketplace NuGet包地址 NuGet Gallery | Home

  2. SpringBoot使用org.springframework.util监控java代码执行耗时时长

    public class StopWatchTask { public static void main(String[] args){ //创建一个计时器 StopWatch stopWatch = ...

  3. ssh连接相关工具下载地址

    1.Finalshell 下载地址: http://www.hostbuf.com/t/988.html 2.xShell https://www.xshell.com/zh/xshell/ 3.pu ...

  4. JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简单集成教程

    JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简单集成教程 JS文件在最下面: 引入 <script src="${path}/js/jquery-2.0.3.mi ...

  5. #最大密度子图,0/1分数规划#UVA1389 Hard Life

    题目 \(n\) 个点,\(m\) 条边的一个无向图,问导出子图的边数除以点数的最大值 分析 考虑二分这个答案,也就是0/1分数规划之后转换成 \(E-mid*V>0\) 这个问题虽然可以精确到 ...

  6. AtCoder Beginner Contest 240

    前言 考场把前六题切了,但是 E 题和 F 题罚时了,所以也写一写. ABC240 E - Ranges on Tree 题目传送门 分析 \(r\) 的最大值就是叶子的个数,如果将叶子按顺序编号, ...

  7. #树状数组,CDQ分治#洛谷 4390 [BOI2007]Mokia 摩基亚

    题目 分析 考虑离线处理,那么询问区间和就可以转换为四个询问, CDQ分治按横坐标处理询问,树状数组维护前缀和就可以了 代码 #include <cstdio> #include < ...

  8. #深搜,期望#CF105B Dark Assembly

    洛谷题目传送门 CODEFORCES传送门 分析 题目强调贿赂要在投票开始前完成说明分糖和成功率可以分开计算 那么分糖考虑直接暴搜,由于题目并没有说糖必须全部分完, 所以每一次分完一颗糖后均要求当前状 ...

  9. 开源共建携手并进 OpenHarmony使能千行百业生态成果亮相HDC2022

     11月4日-6日,第四届华为开发者大会 2022(Together)在中国松山湖如期举行,本次大会围绕"创新照见未来"这一主题,向外界展示了OpenAtom OpenHarmon ...

  10. 一文了解网络编程之走进TCP三次握手和HTTP那些你不知道的事

    受到很多引人入胜的标题党的影响,我终于决定,要起一个比他们还标题党的题目,打不过还不能加入吗,嘿嘿. 网络编程一直是我的弱项,其实归根结底还是我太懒了,一看到那个osi七层模型,TCP/IP模型还有那 ...