MapReduce Partition解析
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解析的更多相关文章
- Mapreduce 框架解析
MapReduce过程解析 一.客户端 Map-Reduce的过程首先是由客户端提交一个任务开始的. public static RunningJob runJob(JobConf job) thro ...
- Hadoop — MapReduce原理解析
1. 概述 Mapreduce是一个分布式运算程序的编程框架,是用户开发"基于hadoop的数据分析应用"的核心框架: Mapreduce核心功能是将用户编写的业务逻辑代码和自带默 ...
- MapReduce编程解析
MapReduce编程模型之案例 wordcount 输入数据 atguigu atguiguss sscls clsjiaobanzhangxuehadoop 输出数据 atguigu 2banzh ...
- Hadoop中Partition解析
1.解析Partition Map的结果,会通过partition分发到Reducer上,Reducer做完Reduce操作后,通过OutputFormat,进行输出,下面我们就来分析参与这个过程的类 ...
- [转] hadoop MapReduce实例解析-非常不错,讲解清晰
来源:http://blog.csdn.net/liuxiaochen123/article/details/8786715?utm_source=tuicool 2013-04-11 10:15 4 ...
- 批处理引擎MapReduce程序设计
批处理引擎MapReduce程序设计 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MapReduce API Hadoop同时提供了新旧两套MapReduce API,新AP ...
- 【Hadoop】mapreduce环形缓冲区
mapreduce过程解析 数据在map中怎么写入磁盘? 数据:经过map逻辑处理过后的数据(key,value)- 磁盘:本地磁盘 环形缓冲区 1.为什么要环形缓冲区? 答:使用环形缓冲区,便于写入 ...
- hadoop jobhistory解析工具汇总
1. White Elephant是LinkedIn开源的一套Hadoop 作业日志收集器和展示器,使用mapreduce作业解析jobhistory日志,得到每个用户使用的资源情况,并通过网页展示. ...
- hadoop下跑mapreduce程序报错
mapreduce真的是门学问,遇到的问题逼着我把它从MRv1摸索到MRv2,从年前就牵挂在心里,连过年回家的旅途上都是心情凝重,今天终于在eclipse控制台看到了job completed suc ...
随机推荐
- day18-网络编程基础(一)
勿骄勿燥,还是要定下心学习,还有有些没定下心 1.基础知识 2.tcp与udp协议 3.网络套接字 4.基于c/s结构的服务器客户端的实验 开始今日份总结 1.基础知识 现有的软件,绝大多数是基于C/ ...
- 老铁啊,我同你讲, 这年头不会点 Git 真不行!!!
-------------------------------------知识是一点一点的积累的, 也是一点一点的吸收的,没有人一口就能吃成一个胖子. 版本控制 说到版本控制,脑海里总会浮现大学毕业是 ...
- mysql常见问题处理
出现: Access denied for user ''@'localhost' to database ' 2.error: Found option without preceding grou ...
- hdu-1728(贪心&&bfs的灵活运用吧)
链接 [https://vjudge.net/contest/256476#problem/D] 题意 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到 ...
- 一、Mysql安装
一.官网下载:https://dev.mysql.com/downloads/mysql/ 二.解压下载好的压缩包,本人存放的位置如下: 如下图解压后的文件目录,因版本的差异.一开始解压后的文件夹下可 ...
- BEX5下新建任务到待办任务
List<OrgUnit> list = new ArrayList<OrgUnit>(); // 1.查询出执行者 String sql = "select t.f ...
- JS 中的原型 -- prototype、__proto__ 以及原型链
原文: 1.深入理解javascript原型和闭包——prototype原型 2.三张图搞懂JavaScript的原型对象与原型链 打开浏览器控制台,任意定义一个对象,打印出来后,会发现有最后一定有一 ...
- codeforces 786E ALT
题目链接:CF786E 输出方案暗示网络流 我们考虑最朴素的建图 由源点\(s\)连向所有人,容量为1:树上所有的边视作节点连向\(t\),流量为1:人向其路径上所有的树边连边,流量为\(inf\), ...
- maven在windows及linux环境下安装
maven下载 下载地址:https://maven.apache.org/download.cgi maven在windows下安装 解压到D盘 修改配置文件 进入conf,打开settings.x ...
- Linux端口被占用的解决(附Python专版)
先说一般情况的解决: lsof -i:8000 查出PID,然后 kill掉程序,接着就可以了 软件重启之后绑定没有释放,lsof -i:8080也查不出来占用的情况 再来个长连接版Python解决法 ...