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

 

四、本机运行

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值