Map的结果,会通过partition分发到Reducer上,reducer操作过后会进行输出。输出的文件格式后缀000001就代表1分区。

Mapper处理过后的键值对,是需要送到Reducer那边进行合并,具有相同的key的键值对会送到同一个Reducer上面。哪个key到哪个Reducer的分配过程,是由Partition决定的

里面只有一个方法getPartition()

@Public
@Stable
public abstract class Partitioner<KEY, VALUE> {
public Partitioner() {
} public abstract int getPartition(KEY var1, VALUE var2, int var3);
}

输入(形参)是Map的结果对<key, value>和reducerTask的数目,输出(返回值)则是分配的Reducer(整数编号)。

就是指定某个Mapper输出的键值对到哪一个reducer上去。

系统缺省的Partitioner是HashPartitioner,它的实现是以key的hashcode对reducer的数值取模,得到对应的Reducer。这样就保证了相同的key值,分配到了同一个Reducer上。编号不大于指定的reducerTasks,0,1,2······(n-1)。

job.setPartitionerClass(JournalDataPartitioner.class);
job.setNumReduceTasks(CollectionUtils.isEmpty(branchIds) ? 3 : branchIds.size() + 1);

partition类

private static class JournalDataPartitioner extends Partitioner<Text, JournalTrxDataSet> {
@Override
public int getPartition(Text key, JournalTrxDataSet value, int arg2) {
if (!CollectionUtils.isEmpty(branchIds)){
for (int i = 0; i < branchIds.size(); i++) {
if (branchIds.get(i).equals(value.getBranchId())){
log.info(">>>>>> i = {}", i);
return i + 1;
}
}
return 0;
}else {
if ("706010101".equals(value.getBranchId())) {
return 1;
} else if ("706010106".equals(value.getBranchId())) {
return 2;
}
return 0;
}
}
}

MapReduce Partition解析的更多相关文章

  1. Mapreduce 框架解析

    MapReduce过程解析 一.客户端 Map-Reduce的过程首先是由客户端提交一个任务开始的. public static RunningJob runJob(JobConf job) thro ...

  2. Hadoop — MapReduce原理解析

    1. 概述 Mapreduce是一个分布式运算程序的编程框架,是用户开发"基于hadoop的数据分析应用"的核心框架: Mapreduce核心功能是将用户编写的业务逻辑代码和自带默 ...

  3. MapReduce编程解析

    MapReduce编程模型之案例 wordcount 输入数据 atguigu atguiguss sscls clsjiaobanzhangxuehadoop 输出数据 atguigu 2banzh ...

  4. Hadoop中Partition解析

    1.解析Partition Map的结果,会通过partition分发到Reducer上,Reducer做完Reduce操作后,通过OutputFormat,进行输出,下面我们就来分析参与这个过程的类 ...

  5. [转] hadoop MapReduce实例解析-非常不错,讲解清晰

    来源:http://blog.csdn.net/liuxiaochen123/article/details/8786715?utm_source=tuicool 2013-04-11 10:15 4 ...

  6. 批处理引擎MapReduce程序设计

    批处理引擎MapReduce程序设计 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MapReduce API Hadoop同时提供了新旧两套MapReduce API,新AP ...

  7. 【Hadoop】mapreduce环形缓冲区

    mapreduce过程解析 数据在map中怎么写入磁盘? 数据:经过map逻辑处理过后的数据(key,value)- 磁盘:本地磁盘 环形缓冲区 1.为什么要环形缓冲区? 答:使用环形缓冲区,便于写入 ...

  8. hadoop jobhistory解析工具汇总

    1. White Elephant是LinkedIn开源的一套Hadoop 作业日志收集器和展示器,使用mapreduce作业解析jobhistory日志,得到每个用户使用的资源情况,并通过网页展示. ...

  9. hadoop下跑mapreduce程序报错

    mapreduce真的是门学问,遇到的问题逼着我把它从MRv1摸索到MRv2,从年前就牵挂在心里,连过年回家的旅途上都是心情凝重,今天终于在eclipse控制台看到了job completed suc ...

随机推荐

  1. 纯代码系列:Python实现验证码图片(PIL库经典用法用法,爬虫12306思路)

    现在的网页中,为了防止机器人提交表单,图片验证码是很常见的应对手段之一.这里就不详细介绍了,相信大家都遇到过. 现在就给出用Python的PIL库实现验证码图片的代码.代码中有详细注释. #!/usr ...

  2. SVN服务器+客户端安装和配置

    先安装客户端.然后安装语言包,然后去小乌龟svn里设置语言为中文. svnServer推荐 subversion和 VisualSVN 网盘下载 TortoiseSVN客户端         汉化包网 ...

  3. 为什么Fourier分析?

    本文旨在给出Fourier分析的几个动机. 目录 波动方程 热导方程 Lapalce变换 求和公式 表示论 特征理论 参考资料 波动方程 考虑一维的波动方程最简单的边值问题$$u(x,t), x\in ...

  4. SQL 无法连接服务器

    错误信息:provider:SQL Network Interfaces, error:52-无法定位 LOCA Database Runtime 安装.请验证SQL Server Express是否 ...

  5. 小小知识点(六)——算法中的P问题、NP问题、NP完全问题和NP难问题

    转自CSDN默一鸣 https://blog.csdn.net/yimingsilence/article/details/80004032 在讨论算法的时候,常常会说到这个问题的求解是个P类问题,或 ...

  6. [转帖]SAP S4 HANA 1610与ECC的比较

    SAP S4 HANA 1610与ECC的比较 https://zhuanlan.zhihu.com/p/27266476 SAP S4 HANA是下一代的ERP套件,是SAP 战略的核心,相关资料也 ...

  7. 利用JDBC工具类 模拟用户登录!

    一.建库 设置 id为主键并自增! 二.定义登录接口 package com.aaa.dao; public interface IDengDao { /* 1.定义一个登陆的接口,参数是name 和 ...

  8. 解决SVN一直弹出登录问题,eclipse.tmatesoft.com

    Windows->preferences->Igonored Resources Add Pattern.. .project .classpath .settings 添加这三个: 把C ...

  9. Angular 框架下ng-repeat内部使用tooltip插件的办法

    普通情况下 <button type="button" class="btn btn-default" data-toggle="tooltip ...

  10. hdu-5786(补图最短路)

    题意:给你n个点,m条无向边,问你这n个点构成的完全图,不用那m条边,由一个s出现的单源最短路 解题思路:首先,暴力建图不行,点太多,那么我们就按照它的规则来,把m条边建好,但是建的这个图表示不走的方 ...