`

MapReduce牛逼(1)MR单词计数例子

 
阅读更多

package cmd;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Counter;
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;
import org.apache.hadoop.mapreduce.lib.partition.HashPartitioner;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;

public class ConfiguredTest extends Configured implements Tool {

	@Override
	public int run(String[] args) throws Exception {
		String INPUT_PAHT = args[0];
		String OUTPUT_PAHT = args[1];

		Job job = new Job(new Configuration(), ConfiguredTest.class.getName());
		job.setJarByClass(ConfiguredTest.class);
		// 1.1 输入
		FileInputFormat.setInputPaths(job, new Path(INPUT_PAHT));
		job.setInputFormatClass(TextInputFormat.class);
		// 1.2 Mapper
		job.setMapperClass(MyMapper.class);
		job.setMapOutputKeyClass(Text.class);
		job.setMapOutputValueClass(LongWritable.class);
		// 1.3 分区
		job.setPartitionerClass(HashPartitioner.class);
		job.setNumReduceTasks(1);
		// 1.4 排序、分组
		job.setGroupingComparatorClass(cls)
		job.setSortComparatorClass(cls);
		// 1.5 规约合并
		job.setCombinerClass(MyReducer.class);

		// 2.1 suffered 多个mapper 通过网络,传输到各自分区的reducer上
		// 2.2 reducer
		job.setReducerClass(MyReducer.class);
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(LongWritable.class);
		// 2.3 输出
		job.setOutputFormatClass(TextOutputFormat.class);
		FileOutputFormat.setOutputPath(job, new Path(OUTPUT_PAHT));

		job.waitForCompletion(true);
		return 0;
	}

	public static void main(String[] args) throws Exception {
		ConfiguredTest configuredTest = new ConfiguredTest();
		ToolRunner.run(configuredTest.getConf(), configuredTest, args);
	}

	static class MyMapper extends
			Mapper<LongWritable, Text, Text, LongWritable> {
		protected void map(
				LongWritable key,
				Text value,
				org.apache.hadoop.mapreduce.Mapper<LongWritable, Text, Text, LongWritable>.Context context)
				throws java.io.IOException, InterruptedException {

			String[] split = value.toString().split("\t");
			for (String str : split) {
				context.write(new Text(str), new LongWritable(1));
			}
		};
	}

	static class MyReducer extends
			Reducer<Text, LongWritable, Text, LongWritable> {
		protected void reduce(
				Text key,
				java.lang.Iterable<LongWritable> it,
				org.apache.hadoop.mapreduce.Reducer<Text, LongWritable, Text, LongWritable>.Context context)
				throws java.io.IOException, InterruptedException {

			long num = 0;
			for (LongWritable longWritable : it) {
				num += longWritable.get();
			}
			context.write(key, new LongWritable(num));

		};
	}

}
分享到:
评论

相关推荐

    MapReduce编程实例:单词计数

    在前面《MapReduce实例分析:单词计数》教程中已经介绍了用 MapReduce 实现单词计数的基本思路和具体执行过程。下面将介绍如何编写具体实现代码及如何运行程序。 首先,在本地创建 3 个文件:file00l、file002 和 ...

    MapReduce实例分析:单词计数

    单词计数是最简单也是最能体现 MapReduce 思想的程序之一,可以称为 MapReduce 版“Hello World”。单词计数的主要功能是统计一系列文本文件中每个单词出现的次数。本节通过单词计数实例来阐述采用 MapReduce 解决...

    MapReduce实现单词计数并排序.zip_mapReduce_云计算_单词计数_统计单词_输出前三

    在"MapReduce实现单词计数并排序.java"文件中,你可以找到具体的实现细节,包括Mapper类、Reducer类以及主程序,它们共同完成了从读取输入数据、解析文本、计算单词频率到输出结果的整个流程。 总结起来,这个...

    mapreduce wc单词计数 自定义分区 自定义排序实现

    在MapReduce框架中,"WordCount"是一个经典的例子,用于演示如何处理大数据并进行简单的统计。这个任务的主要目标是计算文本文件中每个单词出现的次数。在这个特定的案例中,我们不仅实现了基本的WordCount功能,还...

    MapReduce的两个简单例子

    在这个过程中,Map阶段的主要任务是对输入的每行文本进行拆分,生成键值对(单词,1),而Reduce阶段则将所有相同的单词键值对进行合并,累加它们的值,从而得到每个单词的总数。 1. **Map阶段**: 输入数据是一...

    mapreduce例子

    标题“MapReduce例子”可能是指一个具体的MapReduce编程示例,展示了如何使用MapReduce模型解决实际问题。MapReduce的工作流程通常包括以下几个步骤: 1. **数据分片(Input Split)**:输入的数据集被分割成多个...

    MapReduce实现单词分类

    MapReduce实现单词分类,可直接运行。MapReduce实现单词分类,可直接运行。

    mapreduce的简单的原理和计数代码

    在单词计数的例子中,Reduce任务会接收到`, [1, 1]&gt;`、`, [1]&gt;`和`, [1]&gt;`这样的键值对。然后对每个键对应的值进行求和,得到最终结果`, 2&gt;`、`, 1&gt;`和`, 1&gt;`。 - **写入结果**:最后,Reduce任务将结果写回到HDFS中...

    Hadoop- 单词计数(Word Count)的MapReduce实现.doc

    Hadoop单词计数(Word Count)的MapReduce实现 Hadoop是一个基于Java的开源大数据处理框架,它提供了一个分布式计算模型,称为MapReduce,用于处理大规模数据。MapReduce模型主要由两个阶段组成:Map阶段和Reduce...

    MapReduce WordCount例子

    在WordCount例子中,Reducer会接收到所有带有相同单词键的中间键值对,将它们的值(出现次数)求和,生成最终的单词计数结果。 **IntelliJ IDEA与Maven配置MapReduce**: 要在IntelliJ IDEA中配置MapReduce开发环境...

    MapReduce读取单词个数.rar

    在这个单词计数的场景中,Reduce函数会将所有相同单词的计数加总,给出每个单词在整个数据集中的总数。 为了运行这个MapReduce程序,你需要一个Maven项目。Maven是一个构建工具,可以帮助管理和构建Java项目,包括...

    MapReduce实例 计算单词数 的jar包

    这是MapReduce的小例子,计算单词量,其中就只是用到小框架,只不过每个人的算法不一样而已。 对应博客地址: https://blog.csdn.net/magic_ninja/article/details/80071394

    Hadoop之MapReduce编程实例完整源码

    学习完此例子后,你能掌握MapReduce基础编程,及如何编译Java文件,打包jar文件,编写shell执行脚本等。后续学习还可以参看本人的CSDN博客,如有问题也可以在线为你解答,不过本人也学习Hadoop不足一年,现学现卖...

    MapReduce设计模式介绍.ppt

    1. 单词计数:使用 MapReduce 实现单词计数统计。 2. 倒排索引:使用 MapReduce 实现倒排索引构建。 总结 MapReduce 设计模式是大数据处理的核心组件,负责将大规模数据处理和分析任务分解为可并行处理的任务。...

    集群MapReduce的包.rar

    这个名为"集群MapReduce的包.rar"的压缩文件很可能包含了一组资源,用于教授或实现MapReduce的单词计数功能。让我们深入探讨一下MapReduce、单词计数及其与云存储的关系。 MapReduce是Google提出的一种编程模型,它...

    Hadoop原理与技术MapReduce实验

    1.单词计数实验(wordcount) (1)输入start-all.sh启动hadoop相应进程和相关的端口号 (2)打开网站localhost:8088和localhost:50070,查看MapReduce任务启动情况 (3)写wordcount代码并把代码生成jar包 (4)运行...

    hadoop 框架下 mapreduce源码例子 wordcount

    在这个例子中,我们将深入理解Hadoop MapReduce的工作原理以及如何在Eclipse环境下实现WordCount源码。 1. **Hadoop MapReduce概述**: Hadoop MapReduce是由两个主要部分组成的:Map阶段和Reduce阶段。Map阶段将...

    实验项目 MapReduce 编程

    WordCount是MapReduce的经典示例,它统计文本中单词的出现次数。在Eclipse或IDEA中,开发者创建了一个新的Java包,仿照Hadoop自带的WordCount.java,编写了自己的WordCount程序。完成后,将程序打包成JAR文件,上传...

    mr.zip_mapReduce

    在这个例子中,Mapper接收行作为输入,然后通过分割单词生成键值对,其中键是单词,值是1。这个过程通常称为“切词”或“分词”。 `WCReducer.java`是Reducer类的实现,它是MapReduce的第二阶段。Reducer接收Mapper...

Global site tag (gtag.js) - Google Analytics