大数据开发平台Hadoop

您所在的位置:网站首页 海南每年最高气温 大数据开发平台Hadoop

大数据开发平台Hadoop

2024-07-10 16:41| 来源: 网络整理| 查看: 265

标题统计全球每年的最高气温和最低气温 **数据资源来源:ftp://ftp.ncdc.noaa.gov/pub/data/gsod/

1 实训目标 (1) 掌握 Combiner 的使用。 (2) 掌握自定义数据类型。

2 实训环境 (1) 使用 1.7版本的 JDK 。 (2) 使用带有三个节点的集群,主节点为 master ,子节点为 slave1 , slave2 。 (3) 使用 2.6.4 版本的 Hadoop 。

3 实训内容 (1) 上传并解压数据。 (2) 编写 MapReduce 程序统计全球每年最高气温和最低气温。

4 实训步骤 4.1 上传并解压数据 (1) 解压 /opt/data/ncdc 目录下所有压缩文件,命令为“ gunzip * ”。解压完成后结果如 图 4‑1 所 示。 在这里插入图片描述

(2) 查看其中一个文件,其数据格式如 图 4‑2 所示。 在这里插入图片描述

其中, YEARMODA 对应年月日, TEMP 对应温度,并且每列数据的分隔符空格的数量是不同的,这个在数据预处理的时候应该注意。

(1) 在 /opt/data 目录下创建一个文件 data.txt ,命令为“ touch /opt/data /data.txt ”。

(2) 回到 ncdc 目录执行命令“ sed -i ‘1d’ * ”删除所有文件的首行字段。

(3) ncdc 目录下执行“ cat * >> /opt/data/ data.txt ”将所有数据输出到 data.txt 中。

(4) 将 data.txt 上传到 HDFS 的 /user/root/ 目录下。

4.2 编写 MapReduce 程序统计全球每年的最高气温和最低气温 (1) 打开 Eclipse ,创建工程 temperature 。

(2) 在工程 temperature 下的 src 目录下建立包 demo 。

(3) 在 包 demo 下新建类 YearMaxTAndMinT, 自定义一个数据类型 YearMaxTAndMinT 继承 Writable 接口,在这个类里面定义字符串类型的变量 year ,定 义 double 类型的变量 maxTemp 和 minTemp ,获取 get() 方法和 set() 方法,实现构造函数。代码如 代码 4‑1 所示。

代码 4 ‑ 1 自定义数据类型YearMaxTAndMinT

package demo; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import org.apache.hadoop.io.Writable; public class YearMaxTAndMinT implements Writable{ private String year; private double maxTemp; private double minTemp; public YearMaxTAndMinT() { } public String getYear() { return year; } public void setYear(String year) { this.year = year; } public double getMaxTemp() { return maxTemp; } public void setMaxTemp(double maxTemp) { this.maxTemp = maxTemp; } public double getMinTemp() { return minTemp; } public void setMinTemp(double minTemp) { this.minTemp = minTemp; } @Override public void readFields(DataInput in) throws IOException { this.year=in.readUTF(); this.maxTemp=in.readDouble(); this.minTemp=in.readDouble(); } @Override public void write(DataOutput out) throws IOException { out.writeUTF(year); out.writeDouble(maxTemp); out.writeDouble(minTemp); }

(4) 创建一个 Mapper 类取名 MaxTAndMinTMapper ,主要功能为获取年份和气温。并将年份作为 key ,气温作为 value 输出。代码如 代码 4‑2 所示。

代码 4 ‑ 2 创建 Mapper 类

package demo; import java.io.IOException; import org.apache.hadoop.io.DoubleWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; public class MaxTAndMinTMapper extends Mapper { @Override protected void map(LongWritable key, Text value, Mapper.Context context) throws IOException, InterruptedException { String line = value.toString().trim(); int[] indexs = getIndexs(line);// 获取年份和气温数据的索引范围 String year = getYear(line, indexs


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3