`

Hadoop读书笔记(十三)MapReduce中Top算法

阅读更多

Hadoop读书笔记系列文章:http://blog.csdn.net/caicongyang/article/category/2166855

1.说明:

从给定的文件中的找到最大值,给定的数据文件格式如下:

 

533
16565
17800
2929
11374
9826
6852
20679
18224
21222
8227
5336
912
29525
3382
2100
10673
12284
31634
27405
18015
...



2.代码:

TopApp.java

 

package suanfa;

import java.io.IOException;
import java.net.URI;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.TestMiniMRClientCluster.MyReducer;
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;

/**
 * <p> 
 * Title: TopApp.java 
 * Package suanfa 
 * </p>
 * <p>
 * Description: 从算1000w个数据中找到最大值
 * <p>
 * @author Tom.Cai
 * @created 2014-12-2 下午10:28:33 
 * @version V1.0 
 *
 */
public class TopApp {
	private static final String INPUT_PATH = "hdfs://192.168.80.100:9000/top_input";
	private static final String OUT_PATH = "hdfs://192.168.80.100:9000/top_out";
	
	
	public static void main(String[] args) throws Exception {
		Configuration conf = new Configuration();
		final FileSystem fileSystem = FileSystem.get(new URI(INPUT_PATH), conf);
		final Path outPath = new Path(OUT_PATH);
		if(fileSystem.exists(outPath)){
			fileSystem.delete(outPath, true);
		}
		
		final Job job = new Job(conf , TopApp.class.getSimpleName());
		FileInputFormat.setInputPaths(job, INPUT_PATH);
		job.setMapperClass(MyMapper.class);
		job.setReducerClass(MyReducer.class);
		job.setOutputKeyClass(LongWritable.class);
		job.setOutputValueClass(NullWritable.class);
		FileOutputFormat.setOutputPath(job, outPath);
		job.waitForCompletion(true);
	}
	
	static class MyMapper extends  Mapper<LongWritable, Text, LongWritable, NullWritable>{
		long max = Long.MAX_VALUE;
		@Override
		protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
			long temp = Long.parseLong(value.toString());
			if(temp>max){
				max = temp;
			}
		}

		@Override
		protected void cleanup(Context context) throws IOException, InterruptedException {
			context.write(new LongWritable(max), NullWritable.get());
		}
	}
	
	
	static class MyReducer extends  Reducer<LongWritable, NullWritable, LongWritable, NullWritable>{
		long max = Long.MAX_VALUE;
		@Override
		protected void reduce(LongWritable key, Iterable<NullWritable> value, Context context) throws IOException, InterruptedException {
			long temp = Long.parseLong(value.toString());
			if(temp>max){
				max = temp;
			}
		}
		
		@Override
		protected void cleanup(Context context) throws IOException, InterruptedException {
			context.write(new LongWritable(max), NullWritable.get());
		}
		
	}
}

 

 

 

欢迎大家一起讨论学习!

有用的自己收!

记录与分享,让你我共成长!欢迎查看我的其他博客;我的博客地址:http://blog.csdn.net/caicongyang

 

分享到:
评论

相关推荐

    3.Hadoop学习笔记.pdf

    YARN引入了资源管理器、节点管理器以及应用程序历史服务器等概念,使得在Hadoop上运行的计算框架不仅仅是MapReduce,也可以是其他框架,如Spark。 Hadoop的生态系统还包括Hive、HBase、Pig、Zookeeper等多种工具和...

    hadoop 笔记

    - **JobTracker**:在旧版本的Hadoop MapReduce中,负责调度和监控所有TaskTracker上的任务。 #### 三、Hadoop单机部署 **3.1 目的** 本节旨在介绍如何在单台计算机上部署Hadoop,这通常用于开发和测试环境。 **...

    hadoop笔记2.pdf

    MapReduce是一种编程模型和处理大数据集的并行算法,用于高效地进行大规模数据分析。 **Hadoop集群的管理与维护** Cloudera Manager是Cloudera提供的一种集群管理工具,可以快速部署和监控Hadoop集群。Hadoop的...

    Hadoop使用笔记

    与MapReduce相比,Spark能够在内存中进行数据处理,使得数据处理速度更快,还支持Hadoop文件系统。 5. 其他Hadoop相关技术: - TensorFlow是由谷歌开发的开源机器学习库,用于进行深度学习的研究,虽然不是Hadoop...

    MapReduceV2笔记

    Hadoop支持多种压缩算法,并提供了在配置文件和程序中设置压缩的方法。压缩池的概念则是为了避免重复压缩相同的数据。 分组功能可以对map输出的键进行二次排序,分组函数决定了键值对如何分组。MapReduce框架中的...

    hadoop笔记

    史上最全hadoop笔记,组件描述 : 1. hdfs : 就是一个文件系统 ,可以存储海量的数据 2. mapreduce : 从海量数据中 ,通过一定的算法 ,计算出有用信息 3. hive : 就是 sql 语句解释器 ,接收用户输入的 sql 语句 ,...

    Hadoop数据分析平台学习笔记

    ### Hadoop数据分析平台学习笔记 #### 一、Hadoop概述 **Hadoop**是一个开源软件框架,用于分布式存储和处理大型数据集。它的设计灵感来源于Google的论文,其中包括Google文件系统(GFS)和MapReduce计算模型。...

    Hadoop阶段初识学习笔记

    - **2006年**:在Google发布的关于GFS和MapReduce的研究报告启发下,他们开始着手创建Hadoop项目,目的是为了提供一个低成本的解决方案来构建大规模的数据处理算法。 #### 四、Hadoop的技术架构 1. **HDFS...

    spark+hadoop大数据处理学习笔记

    本学习笔记将深入探讨这两个工具的核心概念、应用场景以及如何将它们结合使用。 **Hadoop** 是一个开源框架,主要用于分布式存储和计算。它的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce。HDFS...

    Hadoop深入浅出分享资料

    资料可能涵盖Zookeeper的选举算法、会话和观察者模式,以及在Hadoop中如何使用Zookeeper来保证服务的高可用性。 最后,"如何把hadoop源码关联到eclipse工程中"是针对开发者的内容,说明如何将Hadoop的源代码导入...

    大数据知识仓库涉及到数据仓库建模、实时计算、大数据、数据中台、系统设计、Java、算法等代码

    5、Hadoop生态圈的学习笔记,主要记录HDFS、MapReduce、Yarn相关读书笔记及源码分析等 5.1 HDFS Hadoop快速入门 HDFSOverView Hadoop广义生态系统 Hadoop高可用配置 HadoopCommon分析 HDFS集群相关管理 HDFS Shell ...

    基本排序算法及其在MapReduce的应用

    冒泡、选择、插入三种作为基本的排序算法是必须要掌握的,而在MapReduce的实际应用中。在Map阶段,k-v溢写时,采用的正是快排;而溢出文件的合并使用的则是归并;在Reduce阶段,通过shuffle从Map获取的文件进行合并...

    hadoopusic-main开发笔记

    这个开发笔记可能记录了如何利用Hadoop的生态系统,如HDFS(Hadoop Distributed File System)进行数据存储,以及MapReduce或YARN进行数据处理。 【描述】虽然描述部分重复了标题,但我们可以推断,"hadoopusic-...

    day03_Hadoop.zip

    标题中的"day03_Hadoop.zip"表明这是一个关于Hadoop技术的学习资料压缩包,可能包含的是第三天课程的讲义、笔记或者练习材料。描述中同样提到"day03_Hadoop.zip",没有提供额外信息,但我们可以推断这是与Hadoop相关...

    大数据技术学习笔记1

    大数据技术学习笔记1 是一份关于大数据技术的学习笔记,涵盖了大数据技术的基本概念、Hadoop 生态系统、MapReduce 算法、Spark 框架、分布式计算平台等多个方面。 Hadoop 生态系统 Hadoop 是一个基于 Java 的开源...

    重庆理工大学hadoop第二次作业 作业:王唯.zip

    这可能意味着学生在完成作业的过程中,需要理解Hadoop的基本原理,编写MapReduce程序,并可能参与模拟大数据处理的实战项目。同时,所有源码都经过严格测试,意味着学生可以放心地参考和运行这些代码,以加深对...

    第10课 Python分布式计算笔记.pdf

    在笔记中提及,可能是在介绍如何使用Python通过mrjob或PySpark实现MapReduce程序,或者可能是在对比MapReduce与Spark在wordcount任务上的实现方式。 - 其他可能提及的分布式计算概念和工具:OCR识别出的片段中可能...

    hadoop,spark,linux,机器学习,数据挖掘等大数据全套视频.rar

    标题中的“hadoop,spark,linux,机器学习,数据挖掘等大数据全套视频.rar”表明这是一个包含多方面大数据技术的综合教程资源,涵盖了Hadoop、Spark、Linux、机器学习以及数据挖掘等多个关键领域。这些主题都是现代信息...

Global site tag (gtag.js) - Google Analytics