首頁 資料庫 mysql教程 Hadoop HelloWord Examples- 求平均数

Hadoop HelloWord Examples- 求平均数

Jun 07, 2016 pm 04:32 PM
hadoop 平均數

? 另外一个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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
Java錯誤:Hadoop錯誤,如何處理與避免 Java錯誤:Hadoop錯誤,如何處理與避免 Jun 24, 2023 pm 01:06 PM

Java錯誤:Hadoop錯誤,如何處理和避免使用Hadoop處理大數據時,常常會遇到一些Java異常錯誤,這些錯誤可能會影響任務的執行,導致資料處理失敗。本文將介紹一些常見的Hadoop錯誤,並提供處理和避免這些錯誤的方法。 Java.lang.OutOfMemoryErrorOutOfMemoryError是Java虛擬機器記憶體不足的錯誤。當Hadoop任

如何使用PHP和Hadoop進行大數據處理 如何使用PHP和Hadoop進行大數據處理 Jun 19, 2023 pm 02:24 PM

隨著資料量的不斷增大,傳統的資料處理方式已經無法處理大數據時代所帶來的挑戰。 Hadoop是開源的分散式運算框架,它透過分散式儲存和處理大量的數據,解決了單節點伺服器在大數據處理中帶來的效能瓶頸問題。 PHP是一種腳本語言,廣泛應用於Web開發,而且具有快速開發、易於維護等優點。本文將介紹如何使用PHP和Hadoop進行大數據處理。什麼是HadoopHadoop是

在Beego中使用Hadoop和HBase進行大數據儲存和查詢 在Beego中使用Hadoop和HBase進行大數據儲存和查詢 Jun 22, 2023 am 10:21 AM

隨著大數據時代的到來,資料處理和儲存變得越來越重要,如何有效率地管理和分析大量的資料也成為企業面臨的挑戰。 Hadoop和HBase作為Apache基金會的兩個項目,為大數據儲存和分析提供了一個解決方案。本文將介紹如何在Beego中使用Hadoop和HBase進行大數據儲存和查詢。一、Hadoop和HBase簡介Hadoop是一個開源的分散式儲存和運算系統,它可

探索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'

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

電腦已經成為現代工作的標準配置,所以辦公室軟體也是工作中需要掌握的基本操作,隨著科技的發展,辦公室軟體的功能也日漸強大。 Excel由於功能強大在實際工作中經常被使用,excel作為數據展示清晰直觀,作為計算軟體方便準確,excel可以進行求和、匯總、算平均數。今天我們就教大家excel去掉一個最高分和最低分求平均數的方法。開啟表格後,發現表格中最高分為100分,最低分為66分。因此,我們需要計算這兩個分數以外的其他分數的平均值。 2.點選函數圖示(如下圖)。 3.用TRIMMEAN函數。 4.這個

利用PHP實現大規模資料處理:Hadoop、Spark、Flink等 利用PHP實現大規模資料處理:Hadoop、Spark、Flink等 May 11, 2023 pm 04:13 PM

隨著資料量的不斷增加,大規模資料處理已經成為了企業必須面對和解決的問題。傳統的關聯式資料庫已經無法滿足這種需求,而對於大規模資料的儲存與分析,Hadoop、Spark、Flink等分散式運算平台成為了最佳選擇。在資料處理工具的選擇過程中,PHP作為一種易於開發和維護的語言,越來越受到開發者的歡迎。在本文中,我們將探討如何利用PHP來實現大規模資料處理,以及如

PHP中的資料處理引擎(Spark, Hadoop等) PHP中的資料處理引擎(Spark, Hadoop等) Jun 23, 2023 am 09:43 AM

在目前的網路時代,海量資料的處理是各個企業和機構都需要面對的問題。作為一種廣泛應用的程式語言,PHP同樣需要在資料處理方面跟上時代的腳步。為了更有效率地處理大量數據,PHP開發引入了一些大數據處理工具,如Spark和Hadoop等。 Spark是一款開源的資料處理引擎,可用於大型資料集的分散式處理。 Spark的最大特點是具有快速的資料處理速度和高效的資料存

See all articles