4、第一 个mapReduce程序

来源:互联网 发布:嘉兴学院雅尔网络课程 编辑:程序博客网 时间:2024/05/29 17:31

第一步,map,TokenizerMapper:

package com.Kevin.hadoop;import java.io.IOException;import java.util.StringTokenizer;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;public class TokenizerMapper extends Mapper<Object,Text,Text,IntWritable>{IntWritable one = new IntWritable(1);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);}}}

继承Mapper<Object,Text,Text,IntWritable>,Object输入数据的key,如该行数据的偏移量,Text输入数据的值,Text输出数据的key,IntWritable输出数据的值;

IntWritable one = new IntWritable(1);设置每个key的value都为1

Text word = new Text();创建key对象

StringTokenizer itr = new StringTokenizer(value.toString());java中用来分割字符串的类

context.write(word, one);context保存key-value,留待reduce处理


第二步,reduce,IntSumReducer

package com.Kevin.hadoop;import java.io.IOException;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Reducer;public class IntSumReducer extends Reducer<Text,IntWritable,Text,IntWritable>{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);}}

for(IntWritable val:values){sum += val.get();}
循环读取key对应的所有value,并将其累加,最后将结果写入到context中

第三步,WordCount

package com.Kevin.hadoop;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import org.apache.hadoop.util.GenericOptionsParser;public class WordCount {public static void main(String[] args) throws Exception{Configuration conf = new Configuration();String[] otherArgs = new GenericOptionsParser(conf,args).getRemainingArgs();if(2 != otherArgs.length){System.err.println("Usage: wordcount<in><out>");System.exit(2);}Job job = new Job(conf,"wordcount");job.setJarByClass(WordCount.class);job.setMapperClass(TokenizerMapper.class);job.setReducerClass(IntSumReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);FileInputFormat.addInputPath(job, new Path(otherArgs[0]));FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));System.exit(job.waitForCompletion(true)?0:1);}}

configuration类:读写和保存各种配置资源

job.setMapperClass(TokenizerMapper.class);设置map

job.setReducerClass(IntSumReducer.class);设置reduce

job.setOutputKeyClass(Text.class);设置输出key

job.setOutputValueClass(IntWritable.class);设置输出value

FileInputFormat.addInputPath(job, new Path(otherArgs[0]));设置输入文件路径

FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));设置输出文件路径



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 火柴人联盟2的衣厨怎么办 偶尔犯了一次错误很自责怎么办 房间已经装修好但想加线条怎么办 自己的房间特别乱却不想收拾怎么办 素描中当阴影面正对着自己怎么办 相爱的俩个人却不能在一起怎么办 苹果手机爱思助手下不了东西怎么办 苹果手机在爱思助手刷坏了怎么办 美团外卖摔坏我的奶茶怎么办 米兔定位电话头像突然调换了怎么办 还在气头上时孩子就来撒娇了怎么办 老公把老婆微信屏蔽了老婆该怎么办 魅族手机有质量问题不给退款怎么办 屏幕点不动锁屏密码无法点怎么办 在嘴巴和鼻翼周围长痘该怎么办 小孩嘴巴被蚊虫咬的红肿怎么办 每次洗头都掉好多头发该怎么办 关于宝宝脾不好胃口却很好怎么办 高中生掉发严重怎么办该看什么科 脱头发如何治疗 掉头发厉害怎么办 头发上突然秃了一小块怎么办 全秃过后长出来白色头发怎么办 高三学生喜欢打球影响学习怎么办 高三学生受同学搔挠学习怎么办 烫完头发掉头发很厉害怎么办 烫头发后掉头发很厉害怎么办 十八岁了下门牙活动疼痛怎么办 烫完头发后掉头发很厉害怎么办 16岁的孩孑得了肺炎怎么办 我的头发掉的很厉害怎么办 八个月宝宝头后面没头发怎么办 生完孩子掉头发很厉害怎么办 生完孩子后掉头发很厉害怎么办 头发又细又软又卷怎么办 后颈部没有头发掉光了想植发怎么办 头发掉的厉害怎么办怎么拯救掉头发 头发可以种植吗 如果是秃顶怎么办 染头发把手指甲染黑了怎么办 怀孕两个月下体流褐色分泌物怎么办 头发总是大把大把的得掉 怎么办 严重脱发怎么办去问南宁肤康