`
ganliang13
  • 浏览: 252767 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mapreduce 求最大值最小值问题

阅读更多
import java.io.File;
import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.JobConf;
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.output.FileOutputFormat;

public class GetMinMaxKeyMapReduce {
	
	public static class GetMinMaxKeyMap extends Mapper<Object, Text, Text,Text> {
		private Text min = new Text();
		private Text max = new Text();
		private Long i = new Long(0);
		public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
			String[] strs = value.toString().split("\t");
			if (strs!=null && strs.length>5 &&strs[3].length() > 20 && strs[3].indexOf(" ") == -1 && strs[3].indexOf("=") == -1) {
				if(i==0){
					min= new Text(strs[3]);
					max= new Text(strs[3]);
				}
				if(strs[3].compareTo(min.toString())<0){
					min=new Text(strs[3]);
				}
				if(strs[3].compareTo(max.toString())>0){
					max=new Text(strs[3]);
				}
				i++;
			}
		}
		
		@Override
		protected void cleanup(Context context) throws IOException, InterruptedException {
			context.write(new Text("min"), min);
			context.write(new Text("max"), max);
		}
	}

	public static class GetMinMaxKeyReducer extends Reducer<Text, Text, Text, Text> {
		public void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException {
			String result ="";
			for (Text value : values) {
				if(result.equals("")){
					result = value.toString();
				}
				if (("min").equals(key.toString())) {
					if(value.toString().compareTo(result)<0){
						result=value.toString();
					}
				} else if (("max").equals(key.toString())) {
					if(value.toString().compareTo(result)>0){
						result=value.toString();
					}
				} else {
					System.err.println("未知reduce 输入key:" + key.toString());
				}
			}
			context.write(key, new Text(result));
		}
	}

	public static void main(String[] args) throws Exception { 
		File jarFile = EJob.createTempJar("bin");
		ClassLoader classLoader = EJob.getClassLoader();
		Thread.currentThread().setContextClassLoader(classLoader);
		
		//Hadoop 运行环境
		Configuration conf = new Configuration();
		conf.set("mapred.job.tracker", "bfdbjc1:12001");;
		
		//任务参数设置
		Job job = new Job(conf, "GetMinMaxKey");

		job.setJarByClass(GetMinMaxKeyMapReduce.class);
		job.setMapperClass(GetMinMaxKeyMap.class);
		job.setReducerClass(GetMinMaxKeyReducer.class);

		job.setMapOutputKeyClass(Text.class);
		job.setMapOutputValueClass(Text.class);

		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(Text.class);
		
		FileInputFormat.addInputPath(job, new Path("hdfs://bfdbjc1:12000/user/work/tables2/raw_kafka/l_date=2013-09-15"));
		FileOutputFormat.setOutputPath(job, new Path("hdfs://bfdbjc1:12000/user/work/output/minmaxkey/"));
		
		//Eclipse 本地提交
		((JobConf) job.getConfiguration()).setJar(jarFile.toString());
		
		//等待任务运行完成
		System.exit(job.waitForCompletion(true) ? 0 : 1);
	}
}

 

分享到:
评论

相关推荐

    java操作hadoop之mapreduce计算整数的最大值和最小值实战源码

    本教程将详细讲解如何使用Java编程语言操作Hadoop的MapReduce来计算整数序列中的最大值和最小值,这对于数据分析和处理任务来说是非常基础且实用的技能。 首先,我们需要理解MapReduce的工作原理。MapReduce是一种...

    mapreduce求最大值和最小值

    标题"mapreduce求最大值和最小值"指的是使用MapReduce框架来找出输入数据集中的最大和最小值。这是一个典型的问题,可以很好地展示MapReduce的工作原理和它的应用。 **Map阶段**: 在Map阶段,输入数据被分割成多个...

    Hadoop大数据实训,求最高温度最低温度实验报告

    在本实验"MapReduce编程训练(三)"中,我们主要关注的是利用Hadoop MapReduce框架处理大数据,特别是针对全球气温记录的统计分析。实验的主要目标是实现以下几个关键知识点: 1. **自定义数据类型(Custom Data ...

    java操作hadoop之mapreduce分析年气象数据最低温度实战源码

    1. **数据预处理**:在实际操作前,可能需要对原始气象数据进行预处理,确保它们符合MapReduce的输入格式,例如,将CSV或TXT文件的数据转换为键值对形式,键可以是年份,值包含当年的所有温度记录。 2. **编写...

    基于MapReduce的学生平均成绩统计

    利用MapReduce实现了求学生成绩的最大值,最小值,及成绩分布。结合我的博客“MapReduce之学生平均成绩”看,效果更好。

    Hadoop实训求最高温度和最低温度的数据集

    (2)MapReduce输出结果包含年份、最高气温、最低气温,并按最高气温降序排序。如果最高气温相同,则按最低气温升序排序。 (3)使用自定义数据类型。 (4)结合Combiner和自定义数据类型完成全球每年最高气温和最低气温的...

    MapReduce 设计模式

    6. 数值总结(Numerical Summarizations):涉及如何在MapReduce中进行数值数据的处理,以及如何编写Map函数和Reduce函数来计算数据集的统计特征,如平均值、中位数、最大值和最小值等。 7. 倒排索引总结(Inverted...

    MapReduce设计模式介绍.ppt

    MapReduce 设计模式的应用包括单词计数、记录计数、最大值/最小值/计数、平均值/中位数/标准差等。 倒排索引是实现“单词-文档矩阵”的一种具体存储形式,通过倒排索引,可以根据单词快速获取包含这个单词的文档列表...

    Mapreduce_mapreduce项目_purplegw6_hadoopmapreduce_

    3. **编写Reducer**:Reducer在Reduce阶段运行,它接收Mapper生成的中间键值对,对每个键的所有值进行聚合操作,如求和、最大值、最小值等。在词频统计中,Reducer会计算每个单词的总数。 4. **Shuffle和Sort**:在...

    MapReduce1.doc

    - **数值概要**:在MapReduce中,可以计算各种统计摘要,如最大值、最小值、计数、平均值、中位数和标准差。这些摘要可以帮助理解数据的分布和特性。例如,最大值和最小值可以提供范围信息,平均值反映数据的中心...

    Map-Reduce-Iris-Flower:这些Map Reduce程序的目标是从著名的鸢尾花数据集中计算出萼片长度,萼片宽度,花瓣长度和花瓣宽度的最大值,最小值和平均值。

    在这个项目中,目标是计算鸢尾花数据集中四个特征的统计信息:最大值、最小值和平均值。这涉及到了数据的聚合操作,非常适合MapReduce处理。Map阶段可能涉及读取每个样本的特征值,然后生成键为特征名(如“萼片长度...

    MapReduce分析年气象数据用源代码

    该文件是用于MapReduce分析年气象数据用源代码打成的jar包,虽然名字为MaxTemperature,但里面也包含了MinTemperature的程序。所以可以求取每年的最大值和最小值。

    MapReduce设计模式

    数值汇总模式允许我们对数据进行数学统计,如求平均值、总和、最大最小值等。倒排索引汇总则常见于搜索引擎的处理,它将文本数据转换成便于检索的倒排索引。计数器(Counting with Counters)模式是另一种总结模式,...

    MapReduce分析Youtube数据内含源码以及说明书可以自己运行复现.zip

    2. 汇总操作:对每个键的所有值执行聚合操作,如求和、平均值、最大值或最小值,这取决于具体分析的目标。 3. 结果写回:将最终结果写回到HDFS,供后续分析或展示使用。 这个项目作为“课程作业编程”,意味着它是...

    暨南大学并行计算实验室MapReduce研究

    Reduce阶段则负责聚合Map阶段的结果,执行必要的聚合操作,如求和、最大值、最小值等,最终生成输出结果。 MapReduce的核心优势在于其容错性和可扩展性。如果某个节点故障,任务可以被重新调度到其他节点执行,保证...

    mapreduce在hadoop实现词统计和列式统计

    列式统计可能涉及计算文件中特定列的值,如总和、平均值或最大最小值。在mrflowcount工程中,假设我们有一个结构化的数据文件,每一行代表一条记录,每列包含不同类型的数据。MapReduce的处理方式如下: 1. **...

    MapReduce详解

    Reduce函数是数据聚合的地方,用于计算最终结果,例如求和、最大值、最小值或者统计等。 MapReduce库负责处理数据的分割、分布式调度、错误处理和节点间的通信。这使得程序员可以专注于业务逻辑,而不必关心底层的...

    MapReduce实例

    在这个实例中,Map函数可能解析Hbase中的每一条记录,提取关键信息,如数据字段,而Reduce函数则进行数据统计,例如计算总数、平均值或最大最小值等。 处理后的数据需要存储到**MySQL** 数据库中。MySQL是一个关系...

Global site tag (gtag.js) - Google Analytics