`

Hadoop的WordCount编写

 
阅读更多

 

1 hadoop的wordCount就像学编程时候的helloWord 一样,是编写程序的一个开始。

  

程序可以根据注释加以理解:

/**
* @ClassName: WordCount2 
* @Description: 执行:1 打成jar包  2 上传到hadoop服务器中  3 利用hadoop命令执行(输入和输出参数用文件夹)
* 	如: bin/hadoop jar  WordCount1.jar   /user/root/word_count_in/ /user/root/word_count_out 
* @author:root
* @date 2014年11月24日 下午4:52:30 
*
 */
public class WordCount2 {

	/** 
        
	 *   Mapper<Object, Text, Text, IntWritable> 四个参数分别为 maper的输入key类型,输入value的类型,输出key的类型,输出value的类型
         *   mapper输出的key,value类型就是reducer输入的key,value类型,默认mapper输入key为行号,value为一行的字符串
         *   reducer将mapper输出按照key分组,相同的key数据列表放到同一个列表中,一起传递给reducer处理。
	 * 1 参数类型根据TextInputFormat类来定的,输入格式化还有其他类:如  http://username2.iteye.com/blog/2159836
	 *  map[这里读入输入文件内容 以" \t\n\r\f" 进行分割
	 */
	public static class TokenizerMapper extends
			Mapper<Object, Text, Text, IntWritable> {

		private final static IntWritable one = new IntWritable(1);
		private Text word = new Text();

		public void map(Object key, Text value, Context context)
				throws IOException, InterruptedException {
			StringTokenizer itr = new StringTokenizer(value.toString());
			while (itr.hasMoreTokens()) {
				word.set(itr.nextToken());
				context.write(word, one);
			}
		}
	}

	/**
	 * IntSumReducer 继承自 Reducer<Text,IntWritable,Text,IntWritable>
	 * [不管几个Map,都只有一个Reduce,这是一个汇总]  
	 * 这里的key为Mapper设置的word[每一个key/value都会有一次reduce]
	 * 当循环结束后,最后的确context就是最后的结果.
	 */
	public static class IntSumReducer extends
			Reducer<Text, IntWritable, Text, IntWritable> {
		private IntWritable result = new IntWritable();

		public void reduce(Text key, Iterable<IntWritable> values,
				Context context) throws IOException, InterruptedException {
			int sum = 0;
			for (IntWritable val : values) {
				sum += val.get();
			}
		 
			result.set(sum);
			context.write(key, result);
		}
	}
	/**
	* @Title: main 
	* 执行命令: 
	*   命令   jar包   输入    输出 	
	*   bin/hadoop jar  WordCount1.jar   /user/root/word_count_in/ /user/root/word_count_out
	* @return void    返回类型 
	* @throws 
	 */
	public static void main(String[] args) throws Exception {
		Configuration conf = new Configuration();
		String[] otherArgs = new GenericOptionsParser(conf, args)
				.getRemainingArgs();
		/**
		 * 这里必须有输入/输出
		 */
		if (otherArgs.length != 2) {
			System.err.println("Usage: wordcount <in> <out>");
			System.exit(2);
		}
		//构建mapreduce任务也叫mapreduce作业也叫做一个mapreduce的job
		Job job = new Job(conf, "word count");
		job.setJarByClass(WordCount2.class);// 主类
		job.setInputFormatClass( TextInputFormat.class);//文件输入的处理格式 
		job.setOutputFormatClass(TextOutputFormat.class);//文件输出的处理格式 
		
		job.setMapperClass(TokenizerMapper.class);// mapper
		job.setCombinerClass(IntSumReducer.class);// 作业合成类,可以提高运行效率
		job.setReducerClass(IntSumReducer.class);// reducer
		
		job.setOutputKeyClass(Text.class);// 设置作业输出数据的关键类
		job.setOutputValueClass(IntWritable.class);// 设置作业输出值类
		
		FileInputFormat.addInputPath(job, new Path(otherArgs[0]));// 输入文件路径
		FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));// 输出文件路径
		
		System.exit(job.waitForCompletion(true) ? 0 : 1);// 等待完成退出.
	}
}

  

 

分享到:
评论

相关推荐

    Hadoop mapreduce实现wordcount

    这个文件可能是 Hadoop 官方文档中关于 WordCount 示例的一个章节,详细介绍了如何编写 Map 和 Reduce 函数,以及如何配置和运行 WordCount 作业。可能包括了 Java 代码示例,讲解如何创建 MapReduce 程序,并将其...

    实验2-在Hadoop平台上部署WordCount程序1

    【标题】:在Hadoop平台上部署WordCount程序的详解 【描述】:本实验旨在让学生掌握如何在Hadoop平台上部署并运行WordCount程序,这是Hadoop入门的经典案例,旨在统计文本中的单词出现次数。通过实践,学生将了解...

    hadoop学习之wordCount以及文件上传demo,经测试通过

    在实现WordCount时,我们需要编写两个类:`Mapper`和`Reducer`。Mapper类中,我们使用`Tokenizer`将输入行分解为单词,并使用`emit`方法输出键值对。Reducer类中,我们将接收到的所有相同键的值进行累加。同时,为了...

    windows平台使用hadoop hdfs文件进行中文分词的示例代码

    接着,编写MapReduce程序的核心部分:Mapper和Reducer类。 Mapper类的主要任务是对输入的数据进行预处理,这里是指读取《唐诗三百首》的文本文件,进行中文分词。对于中文分词,我们可以使用开源的中文分词库,如...

    Hadoop集群-WordCount运行详解

    在linux环境下部署的Hadoop集群-WordCount运行详解。

    hadoop入门java代码hdfs文件操作 wordCount源码

    hadoop入门级的代码 Java编写 eclipse可运行 包含 hdfs的文件操作 rpc远程调用的简单示例 map-reduce的几个例子:wordcount 学生平均成绩 手机流量统计

    【大数据入门笔记系列】第五节 SpringBoot集成hadoop开发环境(复杂版的WordCount)

    【大数据入门笔记系列】第五节 SpringBoot集成hadoop开发环境(复杂版的WordCount)前言环境清单创建SpringBoot项目创建包创建yml添加集群主机名映射hadoop配置文件环境变量HADOOP_HOME编写代码添加hadoop依赖jar包...

    hadoop的wordcount实例代码

    Hadoop的WordCount实例代码解析 Hadoop的WordCount实例代码是Hadoop MapReduce编程模型的经典示例,通过对大文件中的单词出现次数的统计,展示了MapReduce编程模型的基本思想和实现细节。 Hadoop MapReduce编程...

    Hadoop集群-WordCount运行详解.pdf

    本篇文档深入浅出地介绍了Hadoop集群的WordCount运行详解,从MapReduce理论到WordCount程序的运行,再到源码分析,内容丰富且详细,对于想要入门和深入了解Hadoop分布式计算和MapReduce模型的读者来说,是一份宝贵的...

    基于Windows eclipse maven Hadoop 的WordCount源码

    总结来说,基于Windows、Eclipse、Maven和Hadoop实现WordCount源码的过程主要包括以下步骤:配置开发环境、创建Maven项目、编写MapReduce代码、打包成jar文件,以及在Hadoop集群上运行作业。通过这个过程,我们可以...

    wordcount_demo

    在"wordcount"这个项目中,用户可能需要编写Java代码来实现Map和Reduce功能,并配置Hadoop环境,确保数据能正确地在集群中分发、处理和聚合。通常,这些代码会包含以下几个关键类: - `WordCount`:主类,负责驱动...

    实验2-在Hadoop平台上部署WordCount程序-孙淼1

    实验2的目的是在Hadoop平台上部署WordCount程序,以此来理解和体验云计算的基础应用。这个实验主要涉及以下几个关键知识点: 1. **Linux系统基础**:实验要求学生具备Linux系统的使用知识,包括基本的命令行操作、...

    hadoop_wordcount

    Java是Hadoop的主要编程语言,因此这个项目标签为“Java”意味着我们将使用Java来编写MapReduce程序。 标题“hadoop_wordcount”指的是一个基于Hadoop的简单应用,用于统计文本文件中单词出现的次数。这个程序分为...

    python MapReduce的wordcount

    3. **编写并运行 Shell 脚本**: ```bash #!/bin/bash export CURRENT=/usr/local/working $HADOOP_HOME/bin/hdfs dfs -rm -r /temp/hdout $HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/...

    eclipse hadoop插件安装 运行WordCount

    在本文中,我们将深入探讨如何在Eclipse IDE中安装Hadoop插件,并通过该插件运行WordCount示例,特别关注Windows环境下的配置。首先,我们需要了解Eclipse Hadoop插件的作用,它允许开发者在Eclipse环境中直接创建、...

    Java实现Hadoop下词配对Wordcount计数代码实现

    通过这个Wordcount实例,我们可以学习到Hadoop MapReduce的基本工作原理,同时也可以了解到如何在Java中编写Hadoop程序。这只是一个基本的应用,实际的Hadoop项目可能会涉及更复杂的逻辑和优化,如分块、分区、压缩...

    hadoop mapreduce 例子项目,运行了单机wordcount

    然后,他们会在MyEclipse中创建一个Maven项目,导入Hadoop相关的依赖,编写Map和Reduce类实现WordCount逻辑。最后,使用Maven命令编译和打包项目,生成一个jar文件,通过Hadoop的`hadoop jar`命令提交到本地集群执行...

    Ubuntu安装Hadoop实现MapReduce里的WordCount

    ### Ubuntu安装Hadoop实现MapReduce里的WordCount #### 核心知识点概述 1. **Ubuntu环境下的基础配置**:包括VMware Tools的安装、JDK的安装与配置。 2. **Hadoop的安装与配置**:包括下载与解压、环境变量配置、...

Global site tag (gtag.js) - Google Analytics