剖析美国平均气温项目

第一步:数据集导入HDFS

使用命令行访问刚刚上传至HDFS的数据集

第一步:在 Map 阶段,提取气象站和气温数据。

public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {

            String line = value.toString(); //读取每行数据
            int temperature = Integer.parseInt(line.substring(14, 19).trim());//气温

            if (temperature != -9999) { //过滤无效数据
                String weatherStationId = "weatherStationId";//真实的气象站id是从文件名字中提取,为了便于单元测试,这里key设置为常量weatherStationId
                context.write(new Text(weatherStationId), new IntWritable(temperature));
            }
        }

第二步:在 Reduce 阶段,统计每个气象站的平均气温。

public static class TemperatureReducer extends Reducer< Text, IntWritable, Text, IntWritable> {
		private IntWritable result = new IntWritable();

		public void reduce(Text key, Iterable< IntWritable> values,Context context) throws IOException, InterruptedException {
			int sum = 0;
			int count = 0;
			for (IntWritable val : values) {
				sum += val.get();
				count++;
			}
			result.set(sum / count);
			context.write(key, result);
		}
	}

  

第三步:对代码进行单元测试及debug调试

/**
 * Mapper 端的单元测试
 */
@SuppressWarnings("all")
public class TemperatureMapperTest {
	private Mapper mapper;//定义一个Mapper对象
	private MapDriver driver;//定义一个MapDriver 对象

	@Before
	public void init() {
		mapper = new Temperature.TemperatureMapper();//实例化一个Temperature中的TemperatureMapper对象
		driver = new MapDriver(mapper);//实例化MapDriver对象
	}

	@Test
	public void test() throws IOException {
		//输入一行测试数据
		String line = "1985 07 31 02   200    94 10137   220    26     1     0 -9999";
		driver.withInput(new LongWritable(), new Text(line))//跟TemperatureMapper输入类型一致
				.withOutput(new Text("weatherStationId"), new IntWritable(200))//跟TemperatureMapper输出类型一致
				.runTest();
	}
}

  

/**
 * Reducer 单元测试
 */
@SuppressWarnings("all")
public class TemperatureReduceTest {
	private Reducer reducer;//定义一个Reducer对象
	private ReduceDriver driver;//定义一个ReduceDriver对象

	@Before
	public void init() {
		reducer = new Temperature.TemperatureReducer();//实例化一个Temperature中的TemperatureReducer对象
		driver = new ReduceDriver(reducer);//实例化ReduceDriver对象
	}

	@Test
	public void test() throws IOException {
		String key = "weatherStationId";//声明一个key值
		List values = new ArrayList();
		values.add(new IntWritable(200));//添加第一个value值
		values.add(new IntWritable(100));//添加第二个value值
		driver.withInput(new Text("weatherStationId"), values)//跟TemperatureReducer输入类型一致
			  .withOutput(new Text("weatherStationId"), new IntWritable(150))//跟TemperatureReducer输出类型一致
			  .runTest();
	}
}

  

/**
 * Mapper 和 Reducer 集成起来测试
 */
@SuppressWarnings("all")
public class TemperatureTest {
	private Mapper mapper;//定义一个Mapper对象
	private Reducer reducer;//定义一个Reducer对象
	private MapReduceDriver driver;//定义一个MapReduceDriver 对象

	@Before
	public void init() {
		mapper = new Temperature.TemperatureMapper();//实例化一个Temperature中的TemperatureMapper对象
		reducer = new Temperature.TemperatureReducer();//实例化一个Temperature中的TemperatureReducer对象
		driver = new MapReduceDriver(mapper, reducer);//实例化MapReduceDriver对象
	}

	@Test
	public void test() throws RuntimeException, IOException {
		//输入两行行测试数据
		String line = "1985 07 31 02   200    94 10137   220    26     1     0 -9999";
		String line2 = "1985 07 31 11   100    56 -9999    50     5 -9999     0 -9999";
		driver.withInput(new LongWritable(), new Text(line))//跟TemperatureMapper输入类型一致
			  .withInput(new LongWritable(), new Text(line2))
			  .withOutput(new Text("weatherStationId"), new IntWritable(150))//跟TemperatureReducer输出类型一致
			  .runTest();
	}
}

  

第四步:将项目编译和打包为Temperature.jar,使用客户端将 Temperature.jar上传至hadoop的/home/hadoop/data目录下。

第五步:使用cd /home/hadoop/data 切换到当前目录,通过

export HADOOP_CLASSPATH=/home/hadoop/data/Temperature.jar
hadoop com.hadoop.base.Temperature

命令行执行任务。

第六步:任务的最终结果输出到 HDFS ,使用hadoop fs -cat /weather/output/part-r-00000命令查看结果。

原文地址:https://www.cnblogs.com/zhoupp/p/10914302.html

时间: 2024-11-07 19:13:02

剖析美国平均气温项目的相关文章

剖析美国平均气温项目,掌握MapReduce编程

数据集导入HDFS 通过命令行访问刚刚上传至HDFS的数据集 [[email protected] hadoop-2.6.0]$ bin/hdfs dfs -ls /weather/ MapReduce程序编译及运行: 第一步:在 Map 阶段,提取气象站和气温数据 public static class TemperatureMapper extends Mapper< LongWritable, Text, Text, IntWritable> { /** * @function Mapp

Python计算国际交换站单日及每月平均气温

数据来源:rp5网站 下载数据样式:选择UTF-8编码.下载后解压得到 xxx.csv 文件 计算目标:包含每个月的平均气温和当月每一天的平均气温,按月命名并存储在相应文件中. 数据格式: 注意: 每日平均气温包含时次:02,08,14,20.初始数据包含时次中05,11,17,23时没有用处. 可能文件中某些日期有缺失的时次,如果有就不计算当天均温.计算月均温时总日数不包括缺失的这天. 代码: 1 #!/usr/bin/env python3 2 def calcTemp(t_file): 3

美国EB-5投资移民项目常见问题的解答

(来源:北京兆龙移民公司www.zhaolong.net 转载请注明出处) 随着现在移民现象的普遍,越来越多的富豪选择进行投资移民到国外,尤其是美国,那么对于美国投资移民有很多的人又会遇到很多不同的问题,那么下面兆龙移民来给大家介绍一下EB-5投资移民项目常见问题的解答吧! 问:谁应该申请办理 EB-5 投资? 答:美国EB-5移民项目的投资者包括来自社会各个阶层.专业人士,商业人士,想要帮助孩子得到良好教育的家长,外国学生和退休人员等,都可以申请美国EB-5移民的项目. 问:EB-5申请后需要

全面深度剖析Spark2--知识点,源码,调优,JVM,图计算,项目

全面深度剖析Spark2--知识点,源码,调优,JVM,图计算,项目 课程观看地址:http://www.xuetuwuyou.com/course/220 课程出自学途无忧网:http://www.xuetuwuyou.com 讲师:西瓜老师 课程共14章,316节,课程从Spark相关的各个技术点进行全方位剖析,最后结合实际项目:用户交互式行为分析系统.DMP用户画像系统,对Spark做了综合性的应用讲解,可以说一套在手,打遍天下无敌手! 第1章:Scala  任务1: java和scala

美国最佳旅游时间在什么季节?

纳美旅游解读出国美国最佳旅游时间是多少?其实对于旅游时间而言,没有什么最佳时间之分,只不过可以相对而言的列举出一些时间段,比如喜欢在淡季出游的朋友,那么十一月初还不错,西部的天气很好,也不是旅游的旺季,机票相对来说比较便宜,一个星期的话,可以去美西地区,洛杉矶,旧金山,拉斯维加斯,大峡谷,这几个地方差不多刚好一个星期,这几个地方也完全可以代表整个的美国!美国最佳旅游时间可以从下面一些信息给以旅游者一些建议,美国跨度很大,气候差别也很大,美国没有全国性的旅游旺季,春天是最好的季节,夏天住宿价格高一

《揭秘美国医疗制度及其相关行业》:全面介绍美国医疗业 五星推荐

这本书出版于2010年.作者国内大学毕业后留学美国,美国医疗管理行业从业者.写的是截至到2010年的美国医疗业的全貌.鉴于医疗业的制度与服务模式变化非常缓慢,书中也包含了美国医疗业最近的一次变革——奥巴马医改,这本书目前看一点都不过时.再说也确实找不到第二本中文介绍美国医疗制度的书. 前面一半篇幅介绍美国的医院的组织形式商业模式.医生护士的教育执业情况.医疗保险公司的商业模式,后面介绍制药公司.医疗器械公司.研究机构.行业组织.非主流医学.2009年奥巴马医改. 医疗制度也展现出民主制度无力的一

小型移动项目笔记

学习慕课网html5+css3笔记 能够独立根据设计稿进行整套项目的需求,剖析及其开发对项目开发流程需要有一个基本的 了解可以灵活 运用切图,重构,前端的知识对项目进行灵活的控制. 需求分析 项目主题 单页面的弹幕欢快的 三个页面 多页视觉放在一个网页文档 采用视觉差特效完成分页展示音乐不跟随翻页,位置固定,播放旋转,可暂停.需求的沟通与确认. 开发技能分析 移动端项目,采用html5作为项目的结构层分析网页呈现形式,直接采用css3完成网页的 表现层特效分析,采用css3完成主要特效,采用Ja

美国精品预科,完美衔接美国前80名校

出国留学去美国读本科成为最近比较热门的留学形式,据调查显示,美国大有取代英国成为国内学生出国留学的首选之地.华中师范大学国际预科老师指出,美国教育体制和授课方式先进,但去美国留学的竞争也相当激烈,如何才能脱颖而出,成功实现自己的留美梦呢?国际预科老师建议选择华中师范大学USE美国精品预科项目. 华师大USE美国精品预科项目介绍 华师大美国精品预科项目USE是面向中国优秀的高中毕业生,不仅提供语言,同时也融入了美国大学的基础课程,学成后,学生可置换30学位,无需SAT/ACT成绩,直接申请入读美国

美国EB-5投资移民怎么样?详细政策是什么?

(来源:北京兆龙移民公司www.zhaolong.net 转载请注明出处) 美国EB-5投资移民怎么样很多人都想了解,很多人也都在问,然而我们清晰可见的是,美国EB-5投资移民无论从申请条件还是项目优势上都可以看出,美国EB-5投资移民是一个不错的选择,那么美国EB-5投资移民怎么样呢?现在由兆龙移民为大家介绍一下美国EB-5投资移民怎么样吧! 美国EB-5投资移民的主要内容就是外国移民者可以通过投资或创立一美国境内的企业,并创造十个就业机会,即可获发二年期的有条件移民签证.二年届满前90天,若