搜索
首页数据库mysql教程Hadoop HelloWord Examples- 求平均数

? 另外一个hadoop的入门demo,求平均数。是对WordCount这个demo的一个小小的修改。输入一堆成绩单(人名,成绩),然后求每个人成绩平均数,比如: //? subject1.txt ? a 90 ? b 80 ? c 70 ?// subject2.txt ? a 100 ? b 90 ? c 80 ? 求a,b,c这三个人的平均

? 另外一个hadoop的入门demo,求平均数。是对WordCount这个demo的一个小小的修改。输入一堆成绩单(人名,成绩),然后求每个人成绩平均数,比如:

//? subject1.txt

? a 90
? b 80
? c 70


?// subject2.txt

? a 100
? b 90
? c 80


? 求a,b,c这三个人的平均分。解决思路很简单,在map阶段key是名字,value是成绩,直接output。reduce阶段得到了map输出的key名字,values是该名字对应的一系列的成绩,那么对其求平均数即可。

? 这里我们实现了两个版本的代码,分别用TextInputFormat和 KeyValueTextInputFormat来作为输入格式。

? TextInputFormat版本:

?

import java.util.*;
import java.io.*;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class AveScore {
	public static class AveMapper extends Mapper
	{
		@Override
		public void map(Object key, Text value, Context context) throws IOException, InterruptedException
		{
			String line = value.toString();
			String[] strs = line.split(" ");
			String name = strs[0];
			int score = Integer.parseInt(strs[1]);
			context.write(new Text(name), new IntWritable(score));
		}
	}
	public static class AveReducer extends Reducer
	{
		@Override
		public void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException
		{
			int sum = 0;
			int count = 0;
			for(IntWritable val : values)
			{
				sum += val.get();
				count++;
			}
			int aveScore = sum / count;
			context.write(key, new IntWritable(aveScore));
		}
	}
	public static void main(String[] args) throws Exception
	{
		Configuration conf = new Configuration();
		Job job = new Job(conf,"AverageScore");
		job.setJarByClass(AveScore.class);
		job.setMapperClass(AveMapper.class);
		job.setReducerClass(AveReducer.class);
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(IntWritable.class);
		FileInputFormat.addInputPath(job, new Path(args[0]));
		FileOutputFormat.setOutputPath(job, new Path(args[1]));
		System.exit( job.waitForCompletion(true) ? 0 : 1);
	}
}

KeyValueTextInputFormat版本;

import java.util.*;
import java.io.*;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.input.KeyValueTextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
public class AveScore_KeyValue {
	public static class AveMapper extends Mapper
	{
		@Override
		public void map(Text key, Text value, Context context) throws IOException, InterruptedException
		{
		    int score = Integer.parseInt(value.toString());
			context.write(key, new IntWritable(score) );
		}
	}
	public static class AveReducer extends Reducer
	{
		@Override
		public void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException
		{
			int sum = 0;
			int count = 0;
			for(IntWritable val : values)
			{
				sum += val.get();
				count++;
			}
			int aveScore = sum / count;
			context.write(key, new IntWritable(aveScore));
		}
	}
	public static void main(String[] args) throws Exception
	{
		Configuration conf = new Configuration();
		conf.set("mapreduce.input.keyvaluelinerecordreader.key.value.separator", " ");
		Job job = new Job(conf,"AverageScore");
		job.setJarByClass(AveScore_KeyValue.class);
		job.setMapperClass(AveMapper.class);
		job.setReducerClass(AveReducer.class);
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(IntWritable.class);
  		job.setInputFormatClass(KeyValueTextInputFormat.class);
		job.setOutputFormatClass(TextOutputFormat.class)  ; 
		FileInputFormat.addInputPath(job, new Path(args[0]));
		FileOutputFormat.setOutputPath(job, new Path(args[1]));
		System.exit( job.waitForCompletion(true) ? 0 : 1);
	}
}


输出结果为:

? a 95
? b 85
? c 75

?

作者:qiul12345 发表于2013-8-23 21:51:03 原文链接

阅读:113 评论:0 查看评论

Hadoop HelloWord Examples- 求平均数

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Java错误:Hadoop错误,如何处理和避免Java错误:Hadoop错误,如何处理和避免Jun 24, 2023 pm 01:06 PM

Java错误:Hadoop错误,如何处理和避免当使用Hadoop处理大数据时,常常会遇到一些Java异常错误,这些错误可能会影响任务的执行,导致数据处理失败。本文将介绍一些常见的Hadoop错误,并提供处理和避免这些错误的方法。Java.lang.OutOfMemoryErrorOutOfMemoryError是Java虚拟机内存不足的错误。当Hadoop任

在Beego中使用Hadoop和HBase进行大数据存储和查询在Beego中使用Hadoop和HBase进行大数据存储和查询Jun 22, 2023 am 10:21 AM

随着大数据时代的到来,数据处理和存储变得越来越重要,如何高效地管理和分析大量的数据也成为企业面临的挑战。Hadoop和HBase作为Apache基金会的两个项目,为大数据存储和分析提供了一种解决方案。本文将介绍如何在Beego中使用Hadoop和HBase进行大数据存储和查询。一、Hadoop和HBase简介Hadoop是一个开源的分布式存储和计算系统,它可

如何使用PHP和Hadoop进行大数据处理如何使用PHP和Hadoop进行大数据处理Jun 19, 2023 pm 02:24 PM

随着数据量的不断增大,传统的数据处理方式已经无法处理大数据时代带来的挑战。Hadoop是开源的分布式计算框架,它通过分布式存储和处理大量的数据,解决了单节点服务器在大数据处理中带来的性能瓶颈问题。PHP是一种脚本语言,广泛应用于Web开发,而且具有快速开发、易于维护等优点。本文将介绍如何使用PHP和Hadoop进行大数据处理。什么是HadoopHadoop是

excel去掉一个最高分和最低分求平均数excel去掉一个最高分和最低分求平均数Mar 20, 2024 am 09:45 AM

电脑已经成为现代工作的标准配置,所以办公软件也是工作中需要掌握的一项基本操作,随着科技的发展,办公软件的功能也日渐强大。Excel由于功能强大在实际工作中经常被使用,excel作为数据展示清晰直观,作为计算软件方便准确,excel可以进行求和、汇总、算平均数。今天我们就教大家excel去掉一个最高分和最低分求平均数的方法。打开表格后,发现该表中最高分为100分,最低分为66分。因此,我们需要计算除这两个分数外的其他分数的平均值。2.点击函数图标(如下图所示)。3.用TRIMMEAN函数。4.这个

探索Java在大数据领域的应用:Hadoop、Spark、Kafka等技术栈的了解探索Java在大数据领域的应用:Hadoop、Spark、Kafka等技术栈的了解Dec 26, 2023 pm 02:57 PM

Java大数据技术栈:了解Java在大数据领域的应用,如Hadoop、Spark、Kafka等随着数据量不断增加,大数据技术成为了当今互联网时代的热门话题。在大数据领域,我们常常听到Hadoop、Spark、Kafka等技术的名字。这些技术起到了至关重要的作用,而Java作为一门广泛应用的编程语言,也在大数据领域发挥着巨大的作用。本文将重点介绍Java在大

linux下安装Hadoop的方法是什么linux下安装Hadoop的方法是什么May 18, 2023 pm 08:19 PM

一:安装JDK1.执行以下命令,下载JDK1.8安装包。wget--no-check-certificatehttps://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz2.执行以下命令,解压下载的JDK1.8安装包。tar-zxvfjdk-8u151-linux-x64.tar.gz3.移动并重命名JDK包。mvjdk1.8.0_151//usr/java84.配置Java环境变量。echo'

PHP中的数据处理引擎(Spark, Hadoop等)PHP中的数据处理引擎(Spark, Hadoop等)Jun 23, 2023 am 09:43 AM

在当前的互联网时代,海量数据的处理是各个企业和机构都需要面对的问题。作为一种广泛应用的编程语言,PHP同样需要在数据处理方面跟上时代的步伐。为了更加高效地处理海量数据,PHP开发引入了一些大数据处理工具,如Spark和Hadoop等。Spark是一款开源的数据处理引擎,可以用于大型数据集的分布式处理。Spark的最大特点是具有快速的数据处理速度和高效的数据存

hadoop三大核心组件介绍hadoop三大核心组件介绍Mar 13, 2024 pm 05:54 PM

Hadoop的三大核心组件分别是:Hadoop Distributed File System(HDFS)、MapReduce和Yet Another Resource Negotiator(YARN)。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能