目录
5. 排序 6. SequenceFileOutputFormat 和 SequenceFileInputFormat
7. 配置Combiner(合并)优化 8. Partitioner(分区)优化
继上一篇:https://blog.csdn.net/gaofengyan/article/details/86300388 对mapreduce运算框架初步学习之后,这里对MapReduce框架做一个优化案例,以音乐排行榜为例。案例涉及知识:Top K排序;Combiner(合并)优化处理;Partitioner(分区)优化等。具体用一下案例做引导:
1. 小项目
题材:音乐排行榜播放记录 数据格式:
记录id | 歌名 | 播放时间 | 歌手 |
10001 | music1 | 20180101 | singer1 |
10002 | music2 | 20180301 | singer2 |
10003 | music3 | 20180211 | singer1 |
10004 | music2 | 20180709 | singer2 |
10005 | music2 | 20180621 | singer2 |
10006 | music1 | 20180511 | singer1 |
统计信息:
1) 歌名 播放次数(这是第一次运算后得到的文件内容结果)
如: music1 2
music2 3
music3 1
2)按照播放次数降序来显示步骤1的统计信息(这是最终要达到的没有分区的目的效果)
如: 3 music2
2 music1
1 music3
准备以上题材,在桌面创建music.txt文件,并编辑内容:
[hduser@node1 桌面]$ vi music.txt
10001 music1 20180101 sing1
10002 music2 20180301 sing2
10003 music3 20180301 sing1
10004 music2 20180709 sing2
10005 music2 20180621 sing2
10006 music1 20180511 sing1
保存后退出,将music.txt文件copy到分布式文件夹存储(我的路径是在 【/input/下】),发布后检查我这里就不写了:
[hduser@node1 ~]$ ./hadoop/bin/hadoop dfs -put ./桌面/music.txt /input/
跟之前一样准备工作(使用虚拟机中安装的eclipse作业):
1)新建一个mapreduce项目:musicdemo【new】->【project】->【Map/Reduce Project】->【project name:musicdemo】->【finish】
2)新