Hadoop MapReduce编程 API入门系列之wordcount版本3(七)

简介:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

代码

复制代码
 1 package zhouls.bigdata.myMapReduce.wordcount3;
 2 
 3 import java.io.IOException;
 4 
 5 import org.apache.hadoop.io.IntWritable;
 6 import org.apache.hadoop.io.LongWritable;
 7 import org.apache.hadoop.io.Text;
 8 import org.apache.hadoop.mapreduce.Mapper;
 9 import org.apache.hadoop.util.StringUtils;
10 
11 public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{
12 
13 //该方法循环调用,从文件的split中读取每行调用一次,把该行所在的下标为key,该行的内容为value
14 protected void map(LongWritable key, Text value,
15 Context context)
16 throws IOException, InterruptedException {
17 String[] words = StringUtils.split(value.toString(), ' ');
18 for(String w :words){
19 context.write(new Text(w), new IntWritable(1));
20 }
21 }
22 }
复制代码

 

 

 

复制代码
 1 package zhouls.bigdata.myMapReduce.wordcount3;
 2 
 3 import java.io.IOException;
 4 
 5 import org.apache.hadoop.io.IntWritable;
 6 import org.apache.hadoop.io.Text;
 7 import org.apache.hadoop.mapreduce.Reducer;
 8 
 9 public class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable>{
10 
11 //每组调用一次,这一组数据特点:key相同,value可能有多个。
12 protected void reduce(Text arg0, Iterable<IntWritable> arg1,
13 Context arg2)
14 throws IOException, InterruptedException {
15 int sum =0;
16 for(IntWritable i: arg1){
17 sum=sum+i.get();
18 }
19 arg2.write(arg0, new IntWritable(sum));
20 }
21 }
复制代码

 

 

 

复制代码
 1 package zhouls.bigdata.myMapReduce.wordcount3;
 2 
 3 
 4 import org.apache.hadoop.conf.Configuration;
 5 import org.apache.hadoop.fs.FileSystem;
 6 import org.apache.hadoop.fs.Path;
 7 import org.apache.hadoop.io.IntWritable;
 8 import org.apache.hadoop.io.Text;
 9 import org.apache.hadoop.mapreduce.Job;
10 import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
11 import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
12 
13 public class RunJob {
14 
15 public static void main(String[] args) {
16 Configuration config =new Configuration();
17 
18 try {
19 FileSystem fs =FileSystem.get(config);
20 
21 Job job =Job.getInstance(config);
22 job.setJarByClass(RunJob.class);
23 
24 job.setJobName("wc");
25 
26 job.setMapperClass(WordCountMapper.class);
27 job.setReducerClass(WordCountReducer.class);
28 
29 job.setMapOutputKeyClass(Text.class);
30 job.setMapOutputValueClass(IntWritable.class);
31 
32 FileInputFormat.addInputPath(job, new Path("./data/wc.txt"));
33 
34 Path outpath =new Path("./out/WordCountout");
35 if(fs.exists(outpath)){
36 fs.delete(outpath, true);
37 }
38 FileOutputFormat.setOutputPath(job, outpath);
39 
40 boolean f= job.waitForCompletion(true);
41 if(f){
42 System.out.println("job任务执行成功");
43 }
44 } catch (Exception e) {
45 e.printStackTrace();
46 }
47 }
48 }


本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/6163617.html,如需转载请自行联系原作者
相关文章
|
存储 分布式计算 资源调度
Hadoop入门基础(三):如何巧妙划分Hadoop集群,全面提升数据处理性能?
Hadoop入门基础(三):如何巧妙划分Hadoop集群,全面提升数据处理性能?
|
SQL 分布式计算 Hadoop
Hadoop生态系统:从小白到老司机的入门指南
Hadoop生态系统:从小白到老司机的入门指南
586 13
|
分布式计算 资源调度 Hadoop
Hadoop入门基础(五):Hadoop 常用 Shell 命令一网打尽,提升你的大数据技能!
Hadoop入门基础(五):Hadoop 常用 Shell 命令一网打尽,提升你的大数据技能!
|
分布式计算 资源调度 Hadoop
Hadoop入门基础(四):Hadoop启动踩坑记录
Hadoop入门基础(四):Hadoop启动踩坑记录
|
分布式计算 资源调度 Hadoop
Hadoop入门基础(二):Hadoop集群安装与部署详解(超详细教程)(二)
Hadoop入门基础(二):Hadoop集群安装与部署详解(超详细教程)(二)
|
分布式计算 Ubuntu Hadoop
Hadoop入门基础(二):Hadoop集群安装与部署详解(超详细教程)(一)
Hadoop入门基础(二):Hadoop集群安装与部署详解(超详细教程)(一)
|
分布式计算 Hadoop Java
面向开发者的Hadoop编程指南
【8月更文第28天】Hadoop是一个开源软件框架,用于分布式存储和处理大规模数据集。它由Hadoop分布式文件系统(HDFS)和MapReduce编程模型组成。本指南旨在帮助初学者和中级开发者快速掌握Hadoop的基本概念和编程技巧,并通过一些简单的示例来加深理解。
633 0
|
分布式计算 Hadoop
Hadoop系列 mapreduce 原理分析
Hadoop系列 mapreduce 原理分析
262 1
|
分布式计算 资源调度 Hadoop
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
375 3
|
分布式计算 Hadoop Java
Hadoop MapReduce编程
该教程指导编写Hadoop MapReduce程序处理天气数据。任务包括计算每个城市ID的最高、最低气温、气温出现次数和平均气温。在读取数据时需忽略表头,且数据应为整数。教程中提供了环境变量设置、Java编译、jar包创建及MapReduce执行的步骤说明,但假设读者已具备基础操作技能。此外,还提到一个扩展练习,通过分区功能将具有相同尾数的数字分组到不同文件。
240 1