BigData-08:MapReduce高级特性

一、MapReduce的高级特性

提交job流程分析:
在这里插入图片描述
在这里插入图片描述
1、序列化
() 复习:Java的序列化
(
) MapReduce的序列化:核心接口:Writable
如果一个类实现了Writable接口,该类的对象可以作为key和value
举例1:读取员工数据,生成员工的对象,直接输出到HDFS
举例2:使用MapReduce序列化重写“求部门工资的总额的例子”

2、排序
)规则:按照Key2排序
)基本数据类型
(1)数字: 默认:升序
可以改变默认的排序规则(创建自己的比较器即可)

			(2)字符串: 默认:字典顺序
			              可以改变默认的排序规则(创建自己的比较器即可)
	
	(*)对象
		(1)复习:SQL的排序
				   order by后面  + 列名、表达式、列的别名、序号
				                 + 多个列
				   desc只作用于最近的一列
				   补充一点知识:Oracle中,排序后得到结果是不是原来的表?(不是,是临时表的数据)
				   
		(2)员工对象的排序:接口:WritableComparable
				(*)一个列排序
				(*)多个列排序
				
			前提:(*)该对象必须是Key2
			      (*)必须实现序列化接口:Writable接口
				  (*)对象必须是可排序的:类似Java的对象排序
				          java.lang 接口 Comparable<T>
	
	(*)MapReduce二次排序

3、分区:比较重要
(1)什么是分区?partition
结合关系型数据库Oracle
在这里插入图片描述

	(2)MR的分区:根据Map的输出<key2  value2>进行分区
		(*)默认情况下,MR的输出只有一个分区(一个分区就是一个文件)
		(*)自定义分区:按照员工的部门号进行分区
			日志
				18/09/12 21:45:36 INFO mapreduce.Job:  map 100% reduce 33%
				18/09/12 21:45:40 INFO mapreduce.Job:  map 100% reduce 67%
				18/09/12 21:45:41 INFO mapreduce.Job:  map 100% reduce 100%

4、合并: Combiner
	(1)合并是一种特殊的Reducer
	(2)合并是在Mapper端执行一次合并,用于减少Mapper输出到Reducer的数据量,可以提高效率。
	(3)举例:以WordCount为例
	(4)注意:一定要谨慎使用Combiner,有些不能使用:求平均值
	           有Combiner,或者没有Combiner,都不能改变Map和Reduce对应数据的类型

在这里插入图片描述
在这里插入图片描述
注意Map和reduce前后的数据类型:
在这里插入图片描述
在这里插入图片描述

二、MapReduce核心:Shuffle(洗牌)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

phial03

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值