05 MR的序列化和排序

序列化(Serialization)

是指把结构化对象转化为字节流。

反序列化(Deserialization)

是序列化的逆过程。把字节流转为结构化对象。

作用:

用于实现网络的传输 和 数据的磁盘存储工作

 

一、需求:

 

  a   1

  a   9

  b   3

  a   7

  b   8

  b   10

  a   5

要求:

第一列按照字典顺序进行排列

第一列相同的时候, 第二列按照升序进行排列,输出到文件。

 

二、思路:

  • 实现自定义的bean来封装数据,并将bean作为map输出的key来传输

  • MR程序在处理数据的过程中会对数据排序(map输出的kv对传输到reduce之前,会排序),排序的依据是map输出的key。所以,我们如果要实现自己需要的排序规则,则可以考虑将排序因素放到key中,让key实现接口:WritableComparable,然后重写key的compareTo方法。

 

 

三、代码实现:

 

https://download.csdn.net/download/woshilovetg/13735711

 

四、本机运行

05 MR的序列化和排序

 

05 MR的序列化和排序

 

 

五、运行linux

 

将sort.txt上传

 

上传到linux上,在传导hdfs分布式文件系统中

sort.txt

a    1
a    9
b    3
a    7
b    8
b    10
a    5
a    9

执行命令

#/output/sort 必须不存在

#SortMain 主启动类

yarn jar original-day09_mapreduce1-1.0-SNAPSHOT.jar cn.itcast.sort.SortMain /input/sort/sort.txt /output/sort

 

最终结果

10 比3小,是因为10是字符串,按照第一位取排序

05 MR的序列化和排序

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

上一篇:06 MR执行流程和原理


下一篇:docker