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]));设置输出文件路径
- 4、第一 个mapReduce程序
- 第一个MapReduce程序
- 第一个MapReduce程序
- WordCount,第一个MapReduce程序
- 第一个mapreduce程序WordCount
- 第一个MapReduce程序笔记
- 第一个MapReduce程序-WordCount
- 运行第一个mapreduce 程序 通过控制台
- 第一个MapReduce程序遇到的问题
- 第一个MapReduce程序——WordCount
- 第一个python实现的mapreduce程序
- WordCount计数--第一个MapReduce程序
- 第一个mapreduce
- Hadoop-2.3.0学习(4)——第一个简单的mapreduce程序
- Hadoop学习笔记2--第一个Mapreduce程序
- 在Eclipse中运行第一个MapReduce程序
- 在Eclipse中运行第一个MapReduce程序
- hadoop学习系列1之第一个MAPREDUCE程序
- 入党积极分子选举
- Event bus介绍
- java集合类
- Electron-windows下的构建
- Java ServiceLoader(SPI)学习
- 4、第一 个mapReduce程序
- 导航条按钮设置
- 找出数组中的峰值
- JavaScript DOM编程艺术—幻灯片动画
- HDU 5144 NPY and shot (公式+三分)
- sql 提高效率技巧。
- strcpy,strncpy函数实现——string.h库函数
- C++开发中一个解决方案里,两个项目的相互引用,相互依赖的实现方法(解决方法)
- Java学习笔记(内部类、异常)