你好,游客 登录
背景:
阅读新闻

怎样通过MapReduce完成排序

[日期:2017-09-26] 来源:  作者: [字体: ]

  假设有一批海量的数据,每个数据都是由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, 开始执行这个计算任务。

  实验结果

推荐 打印 | 录入:Cstor | 阅读:
相关新闻      
本文评论   
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款