1 描述
假定有一组文件,以空格为分隔符存放着数据。计算一组文件中字符所出现的次数。
输入:
Hello World Hello my love Hello World , i love you
输出:
Hello 3 World 2 love 2 ...
2 实现思路
Map函数:
以字符作为key值,value为1,生成键值对。
Reduce函数:
获取Map输出的键值对,将各个键中的值相加,输出。
逻辑图:
3 代码实现
public class WordCount { 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); } } } 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); } } public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = new Job(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path("input")); FileOutputFormat.setOutputPath(job, new Path("output")); System.exit(job.waitForCompletion(true) ? 0 : 1); } }
4 总结:
这个例子是Hadoop官网给出的例子,比较简单,是MapReduce的HelloWorld小程序。
相关推荐
在"MapReduce实现单词计数并排序.java"文件中,你可以找到具体的实现细节,包括Mapper类、Reducer类以及主程序,它们共同完成了从读取输入数据、解析文本、计算单词频率到输出结果的整个流程。 总结起来,这个...
在前面《MapReduce实例分析:单词计数》教程中已经介绍了用 MapReduce 实现单词计数的基本思路和具体执行过程。下面将介绍如何编写具体实现代码及如何运行程序。 首先,在本地创建 3 个文件:file00l、file002 和 ...
首先,检查单词计数是否可以使用 MapReduce 进行处理。因为在单词计数程序任务中,不同单词的出现次数之间不存在相关性,相互独立,所以,可以把不同的单词分发给不同的机器进行并行处理。因此,可以采用 MapReduce ...
在这个特定的案例中,我们不仅实现了基本的WordCount功能,还扩展了MapReduce的能力,通过自定义分区和自定义排序来优化数据处理流程。 首先,基础的`WordCount`实现,通常包含以下四个步骤: 1. **Map阶段**:...
1. 单词计数:使用 MapReduce 实现单词计数统计。 2. 倒排索引:使用 MapReduce 实现倒排索引构建。 总结 MapReduce 设计模式是大数据处理的核心组件,负责将大规模数据处理和分析任务分解为可并行处理的任务。...
Hadoop单词计数(Word Count)的MapReduce实现 Hadoop是一个基于Java的开源大数据处理框架,它提供了一个分布式计算模型,称为MapReduce,用于处理大规模数据。MapReduce模型主要由两个阶段组成:Map阶段和Reduce...
在这个案例中,我们将深入探讨如何在 Hadoop 环境中使用 MapReduce 实现 WordCount。 【描述】在 Hadoop 环境中,WordCount 的实现主要涉及两个关键阶段:Map 阶段和 Reduce 阶段。Map 阶段将原始输入数据(通常是...
在这个单词计数的场景中,Reduce函数会将所有相同单词的计数加总,给出每个单词在整个数据集中的总数。 为了运行这个MapReduce程序,你需要一个Maven项目。Maven是一个构建工具,可以帮助管理和构建Java项目,包括...
使用MapReduce框架实现(Spark我还不会 )区别于普通的单词计数,本次实现的是中文汉字计数(要使用分词器)区别于单纯的统计词数,本项目实现的是求汉字词频的TopN2. 实验过程MapReduce实现英文词频统计使用中文...
这个名为"集群MapReduce的包.rar"的压缩文件很可能包含了一组资源,用于教授或实现MapReduce的单词计数功能。让我们深入探讨一下MapReduce、单词计数及其与云存储的关系。 MapReduce是Google提出的一种编程模型,它...
在实际项目中,可能会使用Hadoop或者其他支持MapReduce的框架来实现这个过程。 总结来说,基于MapReduce的TF-IDF计算是一个将分布式计算与文本分析相结合的过程,它能够高效地处理大量文档并计算出词的重要程度。...
在大数据处理领域,Java 通常是首选语言,但考虑到Python在数据挖掘和深度学习中的便利性,我们可以使用Python来实现MapReduce。本篇文章将探讨如何在Hadoop平台上利用Python实现WordCount,一个经典的MapReduce示例...
通过以上介绍,我们了解了MapReduce的基本原理以及如何利用Java编程语言实现一个简单的单词计数任务。MapReduce的核心思想在于将大数据问题分割成小问题,并在多个节点上并行处理,最后将结果合并。这种模式非常适合...
字数 使用Java的Hadoop MapReduce字数统计 运行: hadoop jar wordcount.jar "input_folder" "output_folder" “ input_folder”和“ output_folder”是HDFS上的文件夹。
这不仅包括编写Java代码实现Mapper和Reducer类,还涉及Hadoop的命令行工具使用,如提交作业、监控作业状态等。 此外,你还会接触到Hadoop分布式文件系统(HDFS),它是MapReduce处理数据的基础。HDFS设计为高容错、...
本示例中的“大数据MapReduce实现基于白名单的Word Count”是一个具体的应用案例,旨在通过MapReduce算法统计指定白名单词汇在文本数据中的出现频率。以下是对这个主题的详细解释: 1. **MapReduce模型**: ...
程序会读取文本文件,对其中的每个单词进行计数,然后输出每个单词及其出现次数。这展示了如何利用Hadoop进行文本分析,对理解MapReduce的工作原理很有帮助。 3. **HDFS(Hadoop Distributed File System)基本操作...
以计算文档集合中每个单词出现的次数为例,Map函数会处理每个文档,输出每个单词及其出现的次数,Reduce函数则将具有相同单词的所有计数合并,得到每个单词的总出现次数。这里的关键是Map函数对数据进行映射(map)...
1.单词计数实验(wordcount) (1)输入start-all.sh启动hadoop相应进程和相关的端口号 (2)打开网站localhost:8088和localhost:50070,查看MapReduce任务启动情况 (3)写wordcount代码并把代码生成jar包 (4)运行...