Mapreduce《案例之数据排序》
数据源:
a.txt 内容:
aaa 120
bbb 100
ccc 130
ddd 150
b.txt内容:
aaa 121
bbb 101
ccc 131
ddd 150
c.txt内容
aaa 119
bbb 99
ccc 129
ddd 150
输出结果:
aaa120
bbb100
ccc130
ddd150
===========================java code==========================
package gq;
import java.io.IOException;
import java.util.Iterator;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
/**
*
* Class Description:求平均分测试类
*
* Author:gaoqi
*
* Date:2015年6月5日 下午2:03:08
*
*/
public class AvgScore {
public static class Map extends Mapper<LongWritable, Text, Text, IntWritable> {
public void map(LongWritable key,Text value,Context context) throws IOException, InterruptedException{
String line = value.toString().trim();
StringTokenizer stk = new StringTokenizer(line,"/n");
while(stk.hasMoreElements()){
StringTokenizer sk = new StringTokenizer(stk.nextToken());
context.write(new Text(sk.nextToken()), new IntWritable(Integer.parseInt(sk.nextToken())));
}
}
}
public static class Reduce extends Reducer<Text, IntWritable, Text, IntWritable> {
public void reduce(Text key,Iterable<IntWritable> values,Context context) throws IOException, InterruptedException{
Iterator<IntWritable> its = values.iterator();
int sum = 0;
int cnt = 0;
while(its.hasNext()){
sum += its.next().get();
cnt++;
}
context.write(key, new IntWritable(sum/cnt));
}
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = new Job(conf, "AvgScore");
job.setJarByClass(AvgScore.class);
job.setMapperClass(Map.class);
job.setCombinerClass(Reduce.class);
job.setReducerClass(Reduce.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
FileInputFormat.addInputPath(job, new Path("hdfs://h0:9000/user/tallqi/in/inputAvgScore"));
FileOutputFormat.setOutputPath(job, new Path("hdfs://h0:9000/user/tallqi/in/outputAvgScore"));
System.exit(job.waitForCompletion(true)?0:1);
}
}
相关推荐
本案例主要探讨如何使用MapReduce来求取数据集的行平均值,这在数据分析、数据挖掘以及日志分析等场景中非常常见。我们将讨论四种不同的方法来实现这一目标,针对已处理(包含行号)和未处理的数据集。 首先,我们...
总的来说,这个"mapreduce案例代码及案例涉及文件"提供了全面的学习材料,涵盖了MapReduce的基本操作和高级特性。对于初学者来说,这是一个很好的实践平台,能够帮助他们深入理解分布式计算的核心概念,并通过实际...
在这个特定的案例中,我们将讨论如何使用MapReduce来计算数据行的平均值和标准差,这是数据分析中的两个重要统计指标。 首先,我们要理解MapReduce的基本工作流程。它主要包含两个主要阶段:Map阶段和Reduce阶段。...
这个“细细品味Hadoop_Hadoop集群(第9期)_MapReduce初级案例”主题聚焦于Hadoop集群的核心组件——MapReduce,这是一种分布式计算模型,对于处理海量数据具有重要作用。 MapReduce的工作原理可以分为两个主要阶段...
总结来说,这个“mapreduce框架学习之天气统计”案例是一个很好的实践平台,通过它,你可以深入了解MapReduce如何处理大量天气数据,以及如何使用Hadoop的API编写分布式计算程序。实践中遇到的问题和解决方法将...
在这个案例中,我们关注的是与MapReduce相关的数据文件,包括`dept.csv`, `emp.csv`, 和 `sales.csv`。这些CSV(逗号分隔值)文件通常包含结构化的表格数据,非常适合用MapReduce进行分析和处理。 首先,`dept.csv`...
### MapReduce综合应用案例——招聘数据清洗 #### 一、背景 随着互联网技术的迅猛发展,各类在线招聘平台成为连接求职者与企业的桥梁。这些平台不仅提供了海量的招聘信息,也为企业的人才选拔提供了便利。然而,在...
3. MapReduce案例分析:通过“Hadoop Example: WordCount”展示了如何使用MapReduce编程模型来实现一个简单的词频统计程序。这是一个经典的MapReduce入门案例,通过它可以理解MapReduce框架的基本工作原理。 4. Pig...
在成绩分析中,Reduce函数可能会对每个学生的所有成绩求平均值,计算最高分和最低分,或者统计及格和不及格的学生人数。这样,我们可以得到每个学生综合成绩的汇总信息,便于进一步的统计分析。 **大数据处理**: ...
总的来说,这个MapReduce案例展示了如何利用分布式计算的优势来处理大数据清洗任务,尤其在招聘数据这样复杂且庞大的数据集上,提高效率和准确性。通过对数据的清洗和预处理,可以为后续的分析和决策提供更可靠的...
内容涵盖HDFS的JAVA API操作,如文件读取、写入、删除、元数据查询和文件列表等,以及MapReduce编程模型的多个应用,包括求平均数、Join操作、TopK算法、二次排序,并涉及自定义InputFormat、OutputFormat和shuflle...
项目实战部分可能包含了一组示例代码或者实验指导,让学习者能够动手实践,通过实际操作来学习和理解MapReduce计算平均分的过程。 5.团队项目可能是指整个项目是由一个团队协作完成的,这意味着有不同的人负责不同...
在本案例中,我们将深入探讨MapReduce如何应用于招聘数据清洗这一实际场景。 一、Map阶段 在Map阶段,原始数据被分片(split)并分配给多个工作节点(worker node)。每个节点上的mapper任务独立处理其分配的数据块...
它首先对每个键的所有值进行规约(reduction),例如,可以将所有值相加或取平均。在这个排序实例中,由于我们只关心排序,reduce任务可能仅需将所有具有相同键的值合并,然后输出该键以及其对应的排序后的值列表。...
通过学习这些案例,可以更好地理解MapReduce的实际价值和适用场景。 在“MapReduce高阶实现”的课程中,你将有机会深入学习以上知识点,并通过实践项目来提升你的MapReduce编程能力。通过熟练掌握这些高级技巧,你...
在这个案例中,我们可能要统计的是球员的五项关键数据,例如得分、篮板、助攻、抢断和盖帽。 首先,我们需要理解 Hadoop 的生态系统。Hadoop 包括 HDFS(Hadoop Distributed File System),这是一个分布式文件系统...
### MapReduce综合应用案例——招聘数据清洗 #### 案例背景 随着互联网技术的发展,企业获取求职者信息的方式越来越多样化,导致收集到的求职者简历数据量巨大且杂乱无章。一家大型招聘公司在日常运营中积累了大量...
在这个"Day04"的学习资料中,我们将深入探讨MapReduce编程模型,并通过具体的案例来理解其工作原理。 MapReduce 分为两个主要阶段:Map阶段和Reduce阶段。在Map阶段,原始数据被分割成多个块,每个块由一个Map任务...