使用MapReduce求ncdc气象数据中的最低温度

Posted kiritobryant

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用MapReduce求ncdc气象数据中的最低温度相关的知识,希望对你有一定的参考价值。

一 实验内容与完成情况:

一、下载、解压、合并与上传数据

首先启动集群,然后在进行数据处理前首先需要获得所需要的数据,并且下载数据。

使用脚本启动hadoop集群,并且启动zookeeper,使用jpsall查看。

然后创建文件夹,使用wget命令下载数据。

cd /opt/modul/hadoop
mkdir temp #创建文件夹用于存放数据
cd temp
sudo wget ftp://ftp.ncdc.noaa.gov/pub/data/gsod/2016/gsod_2016.tar
sudo wget ftp://ftp.ncdc.noaa.gov/pub/data/gsod/2017/gsod_2017.tar

下载完成之后,通过ll命令查看,然后去解压。

解压2016与2017年的数据包

tar -xvf gsod_2016.tar
tar -xvf gsod_2017.tar

将这些数据文件解压并合并到一个ncdc.txt文件中

zcat *.gz > ncdc.txt
ll |grep ncdc

 

查看ncdc.txt文件

head -12 ncdc.txt

使用sed命令删除匹配'STN'的行

sed -i '/STN/d' ncdc.txt

将准备好的数据上传至hdfs

Myhadoop.sh start
jpsall
hadoop fs -copyFromLocal /opt/modul/hadoop-3.1.3/temp/ncdc.txt input

 

二、编写求最低温度的MapReduce代码

编写MinTemperature.java

编写MinTemperatureMapper.java

编写MinTemperatureReducer.java

  • 编译运行程序

在这里,我们就可以javac *.java打包成.Class文件,然后再将.class文件打包成jar,这样过于麻烦,我们可以使Apache开源所提供的项目管理工具maven,使用maven可以直接将项目打成jar包。

我们可以直接查看到maven打出的jar包,然后通过xftp上传到xshell,最终上传到hadoop集群中

执行程序

hadoop jar /opt/module/hadoop-3.1.3/temp/MinTemperature.jar MinTemperature /input/ncdc.txt ncdc

然后就可以查看了,或者也可以使用java提供的API直接运行。

 

或者也可以在Hadoop里面查看

最终我们得到两年的最低温度,2016年的最低温度是-112°,2017年的最低温度是-115°。

二:出现的问题:

在hadoop集群里面使用jar包执行程序,但是出现上述错误

三:解决的办法:

使用的命令:

hadoop jar /home/hadoop/temp/code/MinTemperature.jar MinTemperature input/ncdc.txt ncdc

原因是没有以正确的格式输入,所以会出现上述问题。

以上是关于使用MapReduce求ncdc气象数据中的最低温度的主要内容,如果未能解决你的问题,请参考以下文章

用mapreduce 处理气象数据集

用mapreduce 处理气象数据集

用mapreduce 处理气象数据集

用mapreduce 处理气象数据集

用mapreduce 处理气象数据集

用mapreduce 处理气象数据集