hadoop实验:求气象数据的最低温度
1.下载部分数据。由于实验就仅仅下载2003年的部分气象数据
2.通过zcat *gz > sample.txt命令解压重定向
[hadoop@Master test_data]$ zcat *gz > /home/hadoop/input/sample.txt
3.查看数据格式
4.把文件sample.txt放进hdfs文件系统里
[hadoop@Master input]$ hadoop fs -put /home/hadoop/input/sample.txt /user/hadoop/in/sample.txt
5.Maper : MinTemperatureMapper.java
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper; public class MinTemperatureMapper
extends Mapper<LongWritable, Text, Text, IntWritable>
{ private static final int MISSING = -9999; @Override
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException{ String line = value.toString();
String year = line.substring(0,4);
int airTemperature;
airTemperature= Integer.parseInt(line.substring(14, 19).trim()); if (airTemperature!= MISSING) {
context.write(new Text(year), new IntWritable(airTemperature));
}
}
6.Reducer :MinTemperatureReducer.java
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer; public class MinTemperatureReducer
extends Reducer<Text, IntWritable, Text, IntWritable>
{ @Override
public void reduce(Text key, Iterable<IntWritable> values,Context context)
throws IOException, InterruptedException
{ int minValue= Integer.MAX_VALUE;
for (IntWritable value : values)
{
minValue= Math.min(minValue, value.get());
}
context.write(key, new IntWritable(minValue));
}
}
7.M-R Job :MinTemperature.java
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class MinTemperature
{
public static void main(String[] args) throws Exception
{
if (args.length!= 2)
{
System.err.println("Usage: MinTemperature<input path> <output path>");
System.exit(-1);
}
Job job= new Job();
job.setJarByClass(MinTemperature.class);
job.setJobName("Min temperature");
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
job.setMapperClass(MinTemperatureMapper.class);
job.setReducerClass(MinTemperatureReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
8.编译,压缩成jar 包
[hadoop@Master myclass]$ javac -classpath /usr/hadoop/hadoop-core-1.2.1.jar MinTemperature*.java
[hadoop@Master myclass]$ jar cvf MinTemperature.jar MinTemperature*.class
added manifest
adding: MinTemperature.class(in = 1417) (out= 799)(deflated 43%)
adding: MinTemperatureMapper.class(in = 1740) (out= 722)(deflated 58%)
adding: MinTemperatureReducer.class(in = 1664) (out= 707)(deflated 57%)
9.运行作业
[hadoop@Master myclass]$ hadoop jar /usr/hadoop/myclass/MinTemperature.jar MinTemperature /user/hadoop/in/sample.txt ./out2
运行报错。发现报错,信息例如以下
找了半天原因。发现是没删掉class ,程序找不到类。在myclass 文件下删掉class文件。仅仅保留生成的jar包
[hadoop@Master myclass]$ rm MinTemperature*.class
10.查看结果
最新文章
- 柯尔莫可洛夫-斯米洛夫检验(Kolmogorov–Smirnov test,K-S test)
- CSS 问题集锦
- 一个简单的Object Hook的例子(win7 32bit)
- 读取iOS通讯录
- Python: 测试函数是否被调用
- MVC升级以后出现";当前上下文中不存在ViewBag";的问题解决
- Nginx和PHP-FPM的启动、重启、停止脚本分享(转)
- WPF 操作键盘
- SAP标准价格修改
- MVC中,查询以异步呈现,分页不用异步的解决方案
- 游览器保存密码和自动填充密码的困惑 (browser save password and auto fill password )
- contentType设置类型导致ajax post data 获取不到数据
- spring boot项目如何测试,如何部署
- memcached性能测试之Twemperf
- wingIDE Pro6 破解教程
- MySQL备份恢复工具Xtrabackup
- antd-design model 数据特点
- Mac 无需网线创建ipv6环境
- kali 创建用户
- Django Aggregation聚合 django orm 求平均、去重、总和等常用方法