hadoop的第一个程序WordCount
来源:互联网 发布:中山大学软件学院 编辑:程序博客网 时间:2024/04/29 23:53
伪代码分析:
执行步骤:
1. map任务处理
1.1读取输入文件内容,解析成key、value对。对输入文件的每一行,解析成key、value对。每一个键值对调用一次map函数。
1.2写自己的逻辑,对输入的key、value处理,转换成新的key、value输出。
1.3对输出的key、value进行分区。
1.4对不同分区的数据,按照key进行排序、分组。相同key的value放到一个集合中。
1.5(可选)分组后的数据进行归约。
2.reduce任务处理
2.1对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点。
2.2对多个map任务的输出进行合并、排序。写reduce函数自己的逻辑,对输入的key、value处理,转换成新的key、value输出。
2.3把reduce的输出保存到文件中。
例子:实现WordCount
WCMapper继承Mapper
package com.herers.rm;import java.io.IOException;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;public class WCMapper extends Mapper<LongWritable, Text, Text, LongWritable> {@Overrideprotected void map(LongWritable key, Text value,Context context)throws IOException, InterruptedException {//接收数据V1String line = value.toString();//切分数据String[] words = line.split(" ");//循环for(String w:words){//出现一次,记一个1,输出context.write(new Text(w), new LongWritable(1));}}}WCReducer继承Reducer
package com.herers.rm;import java.io.IOException;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Reducer;public class WCReducer extends Reducer<Text, LongWritable, Text, LongWritable> {@Overrideprotected void reduce(Text k2, Iterable<LongWritable> v2s,Context context)throws IOException, InterruptedException {//接收数据Text k3 = k2;//定义一个计算器long counter = 0;for(LongWritable i:v2s){counter += i.get();}//输出context.write(k2, new LongWritable(counter));}}
WordCount主函数类:
package com.herers.rm;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.LongWritable;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;/** * * @author vinsuan *1.根据具体的业务逻辑,确定输入输出数据的样式(根据结果) *2.自定义一个类,这个类继承org.apache.hadoop.mapreduce.Mapper,重写mapper方法,在其中实现具体的业务逻辑,在将新的key-value输出 *3.自定义一个类,这个类继承org.apache.hadoop.mapreduce.Reducer,重写reducer方法,在其中实现具体的业务逻辑,在将新的key-value输出 *4.将自定义的mapper和reducer对象组装起来 */public class WordCount {public static void main(String[] args) throws Exception {//构建Job对象Job job = Job.getInstance(new Configuration());//注意:main方法所在的类job.setJarByClass(WordCount.class);//设置Mapper相关属性job.setMapperClass(WCMapper.class);job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(LongWritable.class);FileInputFormat.setInputPaths(job, new Path("/words.text"));//设置reduce相关属相job.setReducerClass(WCReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(LongWritable.class);FileOutputFormat.setOutputPath(job, new Path("/wcount0307"));job.waitForCompletion(true);}}
执行分两种情况:
第一种:
1.将程序打包成Runnerable jar file,并指定函数执行入口
2.上传至linux
3.用java -jar jar路径
第二种:
1.将程序打包成 jar file,并指定函数执行入口
2.上传至linux
3.hadoop jar <jar在linux的路径> <main方法所在的类的全类名>
注意:
1.编程时,注意导包错误。
0 0
- Hadoop的第一个程序 wordcount
- hadoop的第一个程序wordcount实现
- hadoop的第一个程序WordCount
- Hadoop第一个wordcount程序
- 第一个Hadoop程序WordCount
- 第一个hadoop程序-WordCount
- 第一个Hadoop程序WordCount
- 对hadoop第一个小程序WordCount的简单解释.
- 第一个Hadoop程序——WordCount
- hadoop 第一个程序wordcount执行过程
- hadoop 第一个程序 wordcount 详解
- 第一个hadoop入门程序WordCount
- 我的第一个wordcount程序
- Hadoop安装配置、运行第一个WordCount示例程序
- Hadoop的单机伪分布式搭建和运行第一个WordCount程序
- WordCount,第一个MapReduce程序
- 第一个mapreduce程序WordCount
- 第一个MapReduce程序-WordCount
- Java static
- API总结
- 腾讯笔试:格林码+map
- Android资源优化之拥抱svg
- 赵本山 教你如何在实战项目中使用WCF
- hadoop的第一个程序WordCount
- Android中使用Java8 新增语言功能
- 动态规划 数字三角形
- [ windows程序设计(programing windows) ]
- 重置样式normalize.css
- Java基础学习记录之JDBC完成CRUD
- Longest Consecutive Sequence
- 用户特征工程 超详细解读
- 视图机制对于数据库的安全意义