《Hadoop 权威指南》读书笔记第二篇带你初步了解一下 MapReduce
2 关于 MapReduce
MapReduce 是一种可用于数据处理的编程模型,该模型比较简单,但要想写出有用的程序却不太容易。
Hadoop 可以运行各种语言版本的 MapReduce 程序,如:Java、Ruby、Python。书中提供了以上三种不同语言的代码,因为 Python 是最短的,其他的也看不懂,所以就选择用 Python 来进行实际操作啦。
MapReduce 本质上是并行运行的,因此可以将大规模的数据分析任务分发给任何一个拥有足够多机器的数据中心
2.1 气象数据集
分布在全球各地的很多气象传感器每隔一小时收集气象数据和收集大量日志数据,这些数据是半结构化的,而且是按照记录方式存储的,因此非常适合用 MapReduce 来分析
数据格式
-
数据来源:NCDC 美国国家气候数据中心 (National Climatic Data Center)
-
数据格式:每个文件按行以 ASCII 格式存储,其中每一行是一条记录
-
原始数据示例
0067011990999991950051507004+68750+023550FM-12+038299999V0203301N00671220001CN9999999N9+00001+99999999999
0043011990999991950051512004+68750+023550FM-12+038299999V0203201N00671220001CN9999999N9+00221+99999999999
0043011990999991950051518004+68750+023550FM-12+038299999V0203201N00261220001CN9999999N9-00111+99999999999
0043012650999991949032412004+62300+010750FM-12+048599999V0202701N00461220001CN0500001N9+01111+99999999999
0043012650999991949032418004+62300+010750FM-12+048599999V0202701N00461220001CN0500001N9+00781+99999999999 -
以一行数据为例说明其格式
[0:4] 0067
[4:10] 011990 # USAF weather station identifier
[10:15] 99999
[15:23] 19500515 # 观测日期
[23:27] 0700 # 观测时间
[27:28] 4
[28:34] +68750 # 纬度(1000°)
[34:41] +023550 # 经度(1000°)
[41:46] FM-12
[46:51] +0382 # 海拔(m)
[51:56] 99999
[56:60] V020
[60:63] 330 # 风向(度)
[63:64] 1 # 质量代码
[64:65] N
[65:69] 0067
[69:70] 1
[70:75] 22000 # 天顶高度(m)
[75:76] 1 # 质量代码
[76:77] C
[77:78] N
[78:83] 999999 # 可见度(m)
[84:85] 9 # 质量代码
[85:86] N
[86:87] 9
[87:92] +0000 # 空气温度(10℃)
[92:93] 1 # 质量代码
[93:98] +9999 # 露点温度(10℃)
[98:99] 9
[99:104] 99999 # 气压(10hPa)
[104:105] 9 # 质量代码