博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MapReduce计算每年最大值
阅读量:6453 次
发布时间:2019-06-23

本文共 3737 字,大约阅读时间需要 12 分钟。

 

1. 测试文件生成程序,参考

 

MapReduce程序示例如下:

2. 新建Maven项目  hadoop

 

3. pom.xml

4.0.0
com.java
hadoop
1.0.0
org.apache.hadoop
hadoop-common
3.2.0
org.apache.hadoop
hadoop-hdfs
3.2.0
org.apache.hadoop
hadoop-client
3.2.0
${project.artifactId}
org.apache.maven.plugins
maven-compiler-plugin
3.8.0
1.8
1.8
UTF-8

 

4.   MaxMapper.java

package com.java.mapreduce;import java.io.IOException;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;/** * 按年份映射分组 *  * @author Logan * @createDate 2019-03-18 * @version 1.0.0 * */public class MaxMapper extends Mapper
{ @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String line = value.toString(); String year = line.substring(0, 4); int num = Integer.parseInt(line.substring(8, 12)); context.write(new Text(year), new IntWritable(num)); }}

 

5.   MaxReducer.java

package com.java.mapreduce;import java.io.IOException;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Reducer;/** * 计算每年数据中的最大值 *  * @author Logan * @createDate 2019-03-18 * @version 1.0.0 * */public class MaxReducer extends Reducer
{ @Override protected void reduce(Text key, Iterable
values, Context context) throws IOException, InterruptedException { int max = Integer.MIN_VALUE; for (IntWritable value : values) { max = Math.max(max, value.get()); } context.write(key, new IntWritable(max)); }}

 

 

6.   MaxJob.java

package com.java.mapreduce;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;/** * 主程序入口类 *  * @author Logan * @createDate 2019-03-18 * @version 1.0.0 * */public class MaxJob {    public static void main(String[] args) {        try {            Job job = Job.getInstance();            job.setJarByClass(MaxJob.class);            job.setJobName("Get Max");            // 输入第一个参数为文件输入路径            FileInputFormat.addInputPath(job, new Path(args[0]));            // 输入第二个参数为输出结果文件路径            FileOutputFormat.setOutputPath(job, new Path(args[1]));            job.setMapperClass(MaxMapper.class);            job.setReducerClass(MaxReducer.class);            job.setOutputKeyClass(Text.class);            job.setOutputValueClass(IntWritable.class);            job.waitForCompletion(true);        } catch (Exception e) {            e.printStackTrace();        }    }}

 

 

 

 

 

 

.

转载于:https://www.cnblogs.com/jonban/p/10555826.html

你可能感兴趣的文章
我的友情链接
查看>>
条件和条件语句
查看>>
Android中EditText的inputType属性值
查看>>
iOS 开发百问(1)
查看>>
动态代理的应用---AOP
查看>>
js中的prototype和__proto__
查看>>
深入浅出高性能服务发现、配置框架Nacos系列 2: Nacos项目结构介绍
查看>>
Linux定时任务
查看>>
项目手册3
查看>>
银海学院校园剧首映 师生团队编导
查看>>
CentOS一键配置rsync服务器脚本
查看>>
我的第一往篇博文
查看>>
SpringBoot启动分析
查看>>
Why Pascal is Not My Favorite Programming Language
查看>>
移动互联网,政府服务怎么做?
查看>>
Eclipse搭建Android开发环境时adb.exe程序无法执行
查看>>
oracle中查询所有外键引用到某张表的记录
查看>>
关于Java值引用的问题
查看>>
Fedora如何设置启动默认进入文本模式
查看>>
RedHat 6 下配置网卡IP地址,Virtual Linux下配置网卡IP
查看>>