网站大量收购独家精品文档,联系QQ:2885784924

Hadoop 上编写 MapReduce 程序.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hadoop 上编写 MapReduce 程序

Map Reduce是包含两个过程:Map过程和Reduce过程。每一个过程都包含键值对作为输入,程序员可以选择键和值的类型。Map和Reduce的数据流是这样的:Input == Map == Mapper Output == Sort and shuffle == Reduce == Final Output使用Java编写Hadoop Map Reduce代码Map Reduce程序需要三个元素:Map, Reduce和运行任务的代码(在这里,我们把它叫做Invoker)。1)创建Map(可以是任何名字)类和map函数map函数是在org.apache.hadoop.mapreduce.Mapper.class类中,以抽象方法定义的。01import?org.apache.hadoop.io.IntWritable;02import?org.apache.hadoop.io.LongWritable;03import?org.apache.hadoop.io.Text;04import?org.apache.hadoop.mapreduce.Mapper;05?06import?java.io.IOException;07?08public?class?Map?extends?MapperLongWritable, Text, Text,IntWritable {09?private?final?static?IntWritable one =?new?IntWritable(1);10?private?Text word =?new?Text();11?public?void?map(LongWritable key,Text value,Context context)?throws?IOException, InterruptedException {12?word.set(value.toString());13?context.write(word, one);14?}15}解释:Mapper类是一个泛型类,带有4个参数(输入的键,输入的值,输出的键,输出的值)。在这里输入的键为LongWritable(hadoop中的Long类型),输入的值为Text(hadoop中的String类型),输出的键为Text(关键字)和输出的值为Intwritable(hadoop中的int类型)。以上所有hadoop数据类型和java的数据类型都很相像,除了它们是针对网络序列化而做的特殊优化。2)创建Reducer(任何名字)类和reduce函数reduce函数org.apache.hadoop.mapreduce.Reducer.class类中,以抽象方法定义的。01import?org.apache.hadoop.io.IntWritable;02import?org.apache.hadoop.io.Text;03import?org.apache.hadoop.mapreduce.Reducer;04?05import?java.io.IOException;06import?java.util.Iterator;07?08public?class?Reduce?extends?ReducerText, IntWritable, Text,IntWritable {09?@Override10?protected?void?reduce(Text key, Iterable values, Context context)?throws?IOException, InterruptedException {11?int?sum =?0;12?for(IntWritable intWritable : values){13?sum += intWritable.get();14?}15?context.write(key,?new?IntWritable(sum));16?}17}解释:Reducer类是一个泛型类,带有4个参数(输入的键,输入的值,输出的键,输出的值)。在这里输入的键和输入的值必须跟Mapper的输出的类型相匹配,输出的键是Text(关键字),输出的值是Intwritable(出现的次数)3)我们已经准备号了Map和Reduce的实现类现在我们需要invoker来配置Hadoop任务,调用Map Reduce程序。01import?org.apache.hadoop.conf.Configuration;02import?org.apache.hadoop.fs.Path;03import?org.apache.hadoop.io.Text;04import?org.apache.hadoop.map

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档