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- 求平均数, 感谢原作者分享。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Java エラー: Hadoop エラー、対処方法と回避方法 Hadoop を使用してビッグ データを処理する場合、タスクの実行に影響を与え、データ処理の失敗を引き起こす可能性のある Java 例外エラーが頻繁に発生します。この記事では、一般的な Hadoop エラーをいくつか紹介し、それらに対処および回避する方法を示します。 Java.lang.OutOfMemoryErrorOutOfMemoryError は、Java 仮想マシンのメモリ不足によって発生するエラーです。 Hadoop の場合

ビッグデータ時代の到来に伴い、データの処理と保存の重要性がますます高まっており、大量のデータをいかに効率的に管理、分析するかが企業にとっての課題となっています。 Apache Foundation の 2 つのプロジェクトである Hadoop と HBase は、ビッグ データのストレージと分析のためのソリューションを提供します。この記事では、ビッグデータのストレージとクエリのために Beego で Hadoop と HBase を使用する方法を紹介します。 1. Hadoop と HBase の概要 Hadoop は、オープンソースの分散ストレージおよびコンピューティング システムです。

データ量が増加し続けるにつれて、従来のデータ処理方法ではビッグデータ時代がもたらす課題に対処できなくなります。 Hadoop は、ビッグ データ処理において単一ノード サーバーによって引き起こされるパフォーマンスのボトルネック問題を、分散ストレージと大量のデータの処理を通じて解決する、オープン ソースの分散コンピューティング フレームワークです。 PHP は、Web 開発で広く使用されているスクリプト言語であり、迅速な開発と容易なメンテナンスという利点があります。この記事では、ビッグデータ処理に PHP と Hadoop を使用する方法を紹介します。 HadoopとはHadoopとは

現代の仕事ではコンピューターが標準となっており、オフィスソフトも仕事で習得すべき基本操作であり、テクノロジーの発展に伴いオフィスソフトの機能もますます高機能になっています。 Excel はその強力な機能により実務でよく使われていますが、データの表示としてはわかりやすく直感的であり、計算ソフトとしては便利で正確であり、合計、合計、平均の計算が可能です。今日はExcelで最高スコアと最低スコアを削除して平均を計算する方法を説明します。テーブルを開いた後、テーブルの最高スコアは 100 ポイント、最低スコアは 66 ポイントであることがわかりました。したがって、これら 2 つのスコアを除く他のスコアの平均を計算する必要があります。 2. 機能アイコンをクリックします (下図を参照)。 3. TRIMMEAN 関数を使用します。 4.これ

Java ビッグ データ テクノロジ スタック: Hadoop、Spark、Kafka などのビッグ データ分野における Java のアプリケーションを理解します。データ量が増加し続けるにつれて、今日のインターネット時代ではビッグ データ テクノロジが注目のトピックになっています。ビッグデータの分野では、Hadoop、Spark、Kafka などのテクノロジーの名前をよく耳にします。これらのテクノロジーは重要な役割を果たしており、広く使用されているプログラミング言語である Java もビッグデータの分野で大きな役割を果たしています。この記事では、Java のアプリケーション全般に焦点を当てます。

1: 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 環境変数を設定します。エコー'

現在のインターネット時代において、大量のデータの処理は、あらゆる企業や機関が直面する必要がある問題です。 PHP は広く使用されているプログラミング言語であるため、データ処理の面でも時代に対応する必要があります。大量のデータをより効率的に処理するために、PHP 開発には Spark や Hadoop などのビッグ データ処理ツールが導入されています。 Spark は、大規模なデータ セットの分散処理に使用できるオープン ソース データ処理エンジンです。 Spark の最大の特徴は、高速なデータ処理速度と効率的なデータ ストレージです。

Hadoop の 3 つのコア コンポーネントは、Hadoop 分散ファイル システム (HDFS)、MapReduce、および Yet Another Resource Negotiator (YARN) です。
