一个单词统计的实例,怎样通过MapReduce完成排序?
2017-08-31 10:22
405 查看
假设有一批海量的数据,每个数据都是由26个字母组成的字符串,原始的数据集合是完全无序的,怎样通过MapReduce完成排序工作,使其有序(字典序)呢?
对原始的数据进行分割(Split),得到N个不同的数据分块:
实例分析:WordCount
这个类实现Mapper接口中的map 方法,输入参数中的value 是文本文件中的一行,利用StringTokenizer将这个字符串拆成单词,然后将输出结果<单词,1> 写入到org.apache.hadoop.mapred.OutputCollector中。
实现Reduce 类
这个类实现Reducer 接口中的reduce 方法, 输入参数中的key, values 是由Map 任务输出的中间结果,
values 是一个Iterator, 遍历这个Iterator, 就可以得到属于同一个key 的所有value。
此处,key是一个单词,value 是词频。只需要将所有的value 相加,就可以得到这个单词的总的出现次数。
运行Job
在Hadoop中一次计算任务称之为一个job, 可以通过一个JobConf对象设置如何运行这个job。
然后将JobConf对象作为参数,调用JobClient的runJob, 开始执行这个计算任务。
实验结果
对原始的数据进行分割(Split),得到N个不同的数据分块:
实例分析:WordCount
这个类实现Mapper接口中的map 方法,输入参数中的value 是文本文件中的一行,利用StringTokenizer将这个字符串拆成单词,然后将输出结果<单词,1> 写入到org.apache.hadoop.mapred.OutputCollector中。
实现Reduce 类
这个类实现Reducer 接口中的reduce 方法, 输入参数中的key, values 是由Map 任务输出的中间结果,
values 是一个Iterator, 遍历这个Iterator, 就可以得到属于同一个key 的所有value。
此处,key是一个单词,value 是词频。只需要将所有的value 相加,就可以得到这个单词的总的出现次数。
运行Job
在Hadoop中一次计算任务称之为一个job, 可以通过一个JobConf对象设置如何运行这个job。
然后将JobConf对象作为参数,调用JobClient的runJob, 开始执行这个计算任务。
实验结果
相关文章推荐
- 一个单词统计的实例,怎样通过MapReduce完成排序? 推荐
- Hapdoop的一个Mapreduce示例代码--统计单词个数有排序功能
- 【MapReduce实例】单词统计
- Hapdoop的一个Mapreduce示例代码--统计单词个数
- Mapreduce实例---统计单词个数(wordcount)
- nyoj 286 动物统计 【sort排序(统计最多相同单词的个数,不止一个)】
- 通过BitSet完成对单词使用字母的统计
- 针对一个文件 统计其中的单词和字符数 找出文件中出现次数最多的单词数 将文件中出现的单词按频率进行排序并输出
- 初探map()——对一个文件进行统计其中各个单词出现的次数,并按次数从高到低的顺序进行排序
- java利用POI通过模板导出excel的一个实例
- 关于用C语言来实现对一个文档中的条目数字进行统计排序的实现
- stl 中怎样遍历一个map中的所有元素。请给是实例
- 遍历Map方法一(通过HashMap类实现统计单词出现次数)
- wc:统计一个文件里出现某个单词出现的次数
- 通过一个实例简单了解perl
- 设计一个公共的class,通过它的接口可以对任何类型的数组排序
- 利用List统计文件中单词个数,并排序输出
- python MapReduce单词统计