使用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气象数据中的最低温度的主要内容,如果未能解决你的问题,请参考以下文章