Hadoop开发--MapReduce编程--示例(十)

一、手机号分类

  中国移动公司想要查看北京用户的打电话情况,手机信号来自附近的基站,要查看北京用户的信息得从全国所有的基站获取信息并一一筛选,假如我们不把用户按省市进行分别存放的话,每次我们想查看某个省市的信息时便需要从全国所有的基站信息中去一一查询,这样做,无疑效率是非常低的。假如我们把数据都分省市进行存放了,以后我们再想查看北京市的打电话信息便非常方便了,直接到存放北京市打电话信息的文件中查找就可以了。
  135、136、137、138、139是中国移动的手机号码,150、159是中国联通的手机号码、182、183是中国电信的手机号码,134还有84138413这样的网卡归结为其它。这样一来,结果文件应该被分成4份。
同流量统计:


同流量统计

二、年最高气温

必须使用FTP软件下载:
/pub/data/noaa
ftp://ftp.ncdc.noaa.gov/pub/data/gsod
(一)ncdc数据格式解析

2000 01 01 00 10 3 9818 210 21 8 -9999 4
年份 月份 日子 时间点 气温 露点温度 气压 方向 风速
1 2 3 4 5 6 7 8 9 10 11 12

1.数据格式
第1列: 位置 1-4, 长度4: 观察年份
观察年份, 舍入到最近的一小时
第2列: 位置 6-7, 长度2: 观察月份
观察月份, 舍入到最近的一小时
第3列: 位置 9-11, 长度2: 观察日期
观察日期, 舍入到最近的一小时
第4列: 位置12-13, 长度2: 观察小时点
观察小时点, 舍入到最近的一小时
第5列: 位置 14-19, 长度6: 气温
气温计量单位: 摄氏度
换算系数: 10
缺失值: -9999
第6列: 位置 20-24, 长度6: 露点温度
计量单位: 摄氏度
换算系数: 10
缺失值: -9999
第7列: 位置 26-31, 长度6: 海平面气压
相对于平均海平面的气压
计量单位: 帕斯卡
换算系数: 10
缺失值: -9999
第8列: 位置 32-37, 长度6: 风向
起风点与正北方向顺时针测量的夹角
计量单位: 角度
换算系数: 1
缺失值: -9999
*注意: 无风的风向编码为"0"
第9列: 位置 38-43, 长度6: 风速
空气通过某一个固定点的水平速度
计量单位: 米每秒
换算系数: 10
缺失值: -9999
第10列: 位置44-49, 长度6:空气状况总覆盖编码
缺失值: -9999
第11列: 位置 50-55, 长度6: Liquid Precipitation Depth Dimension– 一个小时内
计量单位:毫米 millimeters
换算系数: 10
缺失值: -9999
*注意: Trace precipitation is coded as "-1"
第12列: 位置 56-61, 长度6: Liquid Precipitation Depth Dimension– 6个小时内
计量单位: 毫米
换算系数: 10
缺失值: -9999


编程模型

数据格式:

2016 01 01 00    52   -36 10120   230    30 -9999 -9999 -9999

(二)计算在1949-1955年中,每年的温度降序排序且每年单独一个文件输出存储

--输入数据  
1949-10-01 14:21:02 34°C
1949-10-02 14:01:02 36°C
1950-01-01 11:21:02 32°C
1950-19-01 12:21:02 37°C
1951-12-01 12:21:02 23°C
1950-10-02 12:21:02 41°C
1950-10-03 12:21:02 27°C
1951-07-01 12:21:02 45°C
1951-07-02 12:21:02 46°C

--时间和温度之间是制表符\t

--思路:
1.按照年份升序,同时每一年中温度降序排序
2.按照年份分组,每一年对应一个reduce任务
mapper输出,key为封装对象。

--目的:
自定义排序
自定义分区
自定义分组

结果

结果

结果

结果

三、计算奇数行与偶数行数据之和

1.数据:

10
20
30
40
50
60
70

要求:分别计算奇数行与偶数行数据之和
奇数行总和:10+30+50+70=160
偶数行总和:20+40+60=120
2.结果:

结果

结果

你可能感兴趣的:(Hadoop开发--MapReduce编程--示例(十))