序列化(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
四、本机运行
五、运行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是字符串,按照第一位取排序