mapreduce剖析气象站平均气温

本文详细介绍了使用MapReduce处理气象站平均气温的过程,包括数据预处理、导入HDFS、MapReduce思路分析、代码实现、单元测试以及程序运行步骤。Mapper负责提取气象站和气温数据,Reduce计算平均气温。经过测试,程序运行成功,结果与预期一致。
摘要由CSDN通过智能技术生成

一、气象数据

按行并以 ASCII 格式存储,每一行是一条记录。下图展示了一行采样数据。

这里写图片描述

1998            #year
03          #month
09          #day
17          #hour
11           #temperature
-100            #dew
10237           #pressure
60          #wind_direction    
72          #wind_speed
0           #sky_condition    
0           #rain_1h 
-9999           #rain_6h

将每个气象站的数据文件拼接成一个单独的文件更容易处理,预处理过的数据文件示例如下所示:

这里写图片描述

1985 07 31 02   200    94 10137   220    26     1     0 -9999
1985 07 31 03   172    94 10142   240     0     0     0 -9999
1985 07 31 04   156    83 10148   260    10     0     0 -9999
1985 07 31 05   133    78 -9999   250     0 -9999     0 -9999
1985 07 31 06   122    72 -9999    90     0 -9999     0     0
1985 07 31 07   117    67 -9999    60     0 -9999     0 -9999
1985 07 31 08   111    61 -9999    90     0 -9999     0 -9999
1985 07 31 09   111    61 -9999    60     5 -9999     0 -9999
1985 07 31 10   106    67 -9999    80     0 -9999     0 -9999
1985 07 31 11   100    56 -9999    50     5 -9999     0 -9999

二、数据导入hdfs

使用myeclipse链接集群hdfs,将数据导入hdfs系统的/home/hadoop/weather目录下(自行创建一个存放数据的目录)。

这里写图片描述

这里写图片描述

命令行访问

这里写图片描述

三、思路分析

1.map 阶段输入 原始数据。选择文本格式作为输入格式,将数据集的每一行作为文本输入。提取气象站和气温信息,并将它们作为输出。

2.reduce阶段接收map 函数的输出结果:每个气象站后面紧跟着一系列气温数据,使用reduce 函数遍历整个列表并统计出平均气温。

四、代码

1.编写 Mapper 类,实现 map() 方法,提取气象站和气温数据。

/*
     * 定义一个Mapper类实现map()方法解析气象站数据
     * input key=偏移量,input value =每行数据
     * output key=weatherStationID, output value =temperature 
     */

    public class TempratureMapper 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值