一、排序:按照key2进行排序
1、数字的排序
2、字符串的排序
3、对象的排序: 实现WritableComparable接口 (1)序列化 (2)可被排序
员工数据 Employee.java ----> 作为key2输出
复习SQL:order by 后面 + 列名、表达式、别名、序号 desc
desc 只作用于离他最近的一个列
order by a desc,b desc
(1)一个列的排序
(2)多个列的排序
二、分区:Partition: 根据Map的输出(k2 v2)进行分区
1、默认情况下,MapReduce只有一个分区(只有一个输出文件)
2、什么是分区?(重要)
3、举例:Demo: 按照员工的部门号进行分区,相同部门号的员工输出到一个分区中
日志:
17/12/18 21:47:24 INFO mapreduce.Job: map 100% reduce 0%
17/12/18 21:47:49 INFO mapreduce.Job: map 100% reduce 33%
17/12/18 21:47:55 INFO mapreduce.Job: map 100% reduce 67%
17/12/18 21:47:56 INFO mapreduce.Job: map 100% reduce 100%
三、合并:Combiner
1、MapReduce的任务中,可以没有Combiner
2、Combiner是一种特殊的Reducer,是在Mapper端先做一次Reducer,用来减少Map的输出,从而提高的效率。
3、注意事项:
(1)有些情况,不能使用Combiner -----> 求平均值
(2)引入Combiner,不引人Combiner,一定不能改变原理的逻辑。(MapReduce编程案例:实现倒排索引)
错误:
Error: java.io.IOException: wrong value class: class org.apache.hadoop.io.DoubleWritable is not class org.apache.hadoop.io.IntWritable