Hadoop入门(十九)Mapreduce的最大值程序

一、简介

最大值是统计中最常使用到的,现在使用Mapreduce在海量数据中统计数据的最大值。

 

二、例子

(1)实例描述
给出三个文件,每个文件中都存储了若干个数值,求所有数值中的最大值。

样例输入:                                            
1)file1:  

1
2
3
7
9
-99
2


2)file2:  

11
2
23
17
9
199
22


3)file3:  

21
12
3
17
2
39
12

期望输出:

199

(2)问题分析
实现统计海量数据的最大值,不能将所有的数据加载到内存,计算只能使用类似外部排序的方式,加载一部分数据统计最大值,接着加载另一部分进行统计。

(3)实现步骤

1)Map过程 
    首先使用默认的TextInputFormat类对输入文件进行处理,得到文本中每行的偏移量及其内容。显然,Map过程首先必须分析输入的<key,value>对,得到数值,然后在mapper中统计单个分块的最大值。

2)Reduce过程 
    经过map方法处理后,Reduce过程将获取每个mapper的最大值进行统计,分行统计出最大值。

 

(3)关键代码

package com.mk.mapreduce;import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import java.io.IOException;
import java.net.URI;public class MaxValue {public static class MaxValueMapper extends Mapper<LongWritable, Text, IntWritable, NullWritable> {private Integer maxValue = null;@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {if (StringUtils.isBlank(value.toString())) {System.out.println("空白行");return;}Integer v = Integer.valueOf(value.toString().trim());if(maxValue==null||maxValue < v){maxValue = v;}}@Overrideprotected void cleanup(Context context) throws IOException, InterruptedException {if (maxValue != null)context.write( new IntWritable(maxValue), NullWritable.get());}}public static class MaxValueReducer extends Reducer< IntWritable, NullWritable,IntWritable, NullWritable> {private Integer maxValue = null;@Overrideprotected void reduce(IntWritable key, Iterable<NullWritable> values, Context context) throws IOException, InterruptedException {Integer v = key.get();if(maxValue==null||maxValue < v){maxValue = v;}}@Overrideprotected void cleanup(Context context) throws IOException, InterruptedException {if (maxValue != null)context.write( new IntWritable(maxValue), NullWritable.get());}}public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {String uri = "hdfs://192.168.150.128:9000";String input = "/maxValue/input";String output = "/maxValue/output";Configuration conf = new Configuration();if (System.getProperty("os.name").toLowerCase().contains("win"))conf.set("mapreduce.app-submission.cross-platform", "true");FileSystem fileSystem = FileSystem.get(URI.create(uri), conf);Path path = new Path(output);fileSystem.delete(path, true);Job job = new Job(conf, "MaxValue");job.setJar("./out/artifacts/hadoop_test_jar/hadoop-test.jar");job.setJarByClass(MaxValue.class);job.setMapperClass(MaxValueMapper.class);job.setReducerClass(MaxValueReducer.class);job.setMapOutputKeyClass(IntWritable.class);job.setMapOutputValueClass(NullWritable.class);job.setOutputKeyClass(IntWritable.class);job.setOutputValueClass(NullWritable.class);FileInputFormat.addInputPaths(job, uri + input);FileOutputFormat.setOutputPath(job, new Path(uri + output));boolean ret = job.waitForCompletion(true);System.out.println(job.getJobName() + "-----" + ret);}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322954.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jzoj3913-艰难的选择【差分,统计】

正题 题目大意 一个01串&#xff0c;求最长的子串使得0和1都相等。 解题思路 维护差分数组zzz&#xff0c;vixv_ixvi​x表示iii最早出现在差分数组的那个数字。枚举尾部&#xff0c;用viv_ivi​ codecodecode #include<cstdio> #include<algorithm> #include<…

ASP.NET Core中的OWASP Top 10 十大风险-失效的访问控制与Session管理

本博文翻译自&#xff1a; https://dotnetcoretutorials.com/2017/10/16/owasp-top-10-asp-net-core-broken-authentication-session-management/ 在我们之前关于OWASP Top 10的文章中&#xff0c;我们讨论了SQL注入。SQL注入有一个非常明确的解释和例子&#xff0c;但这次我们…

Hadoop入门(二十)Mapreduce的最小值程序

一、简介 最小值是统计中最常使用到的&#xff0c;现在使用Mapreduce在海量数据中统计数据的最小值。 二、例子 &#xff08;1&#xff09;实例描述 给出三个文件&#xff0c;每个文件中都存储了若干个数值&#xff0c;求所有数值中的最小值。 样例输入&#xff1a; …

jzoj3914-人品问题【树形dp】

正题 题目大意 一棵树每个点有权值&#xff0c;选择kkk个点&#xff0c;要求选子节点之前必须要选父节点。求最大权值。 解题思路 树形背包限制一下必须选kkk个就好了 codecodecode #include<cstdio> #include<algorithm> #include<cstring> #define N 11…

Docker部署运行微服务

1、环境准备&#xff1a; 主机&#xff1a; X-shell X-ftp jar包 这里只说下jar包&#xff0c;另外两个到官网下载即可 Idea打包jar包流程 先按这四步走 先点击左下的框框&#xff0c;再点击maven&#xff0c;出现右边的窗口&#xff0c;点击clean&#xff0c;再点击package&…

Hadoop入门(二十一)Mapreduce的求和程序

一、简介 求和是统计中最常使用到的&#xff0c;现在使用Mapreduce在海量数据中统计数据的求和。 二、例子 &#xff08;1&#xff09;实例描述 给出三个文件&#xff0c;每个文件中都存储了若干个数值&#xff0c;求所有数值中的求和。 样例输入&#xff1a; …

欢乐纪中某B组赛【2019.1.24】

前言 划水AKAKAK 成绩 RankRankRank是有算别人的 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC1112017myself2017myself2017myself3003003001001001001001001001001001001112017xjq2017xjq2017xjq3003003001001001001001001001001001009992017zyc2017zyc2017zyc26…

.net ef core 领域设计代码转换(上篇)

一、前言 .net core 2.0正式版已经发布几个月了&#xff0c;经过研究&#xff0c;决定把项目转移过来&#xff0c;新手的话可以先看一些官方介绍 传送门&#xff1a;https://docs.microsoft.com/zh-cn/dotnet/core/ 由于在领域设计模型上遇到了一些坑&#xff0c;故给大家分享出…

NAT是什么?它有什么功能?值不值得我们去学习?我们该如何去学习呢?

NAT是网络地址转换&#xff08;Network Address Translation&#xff09;的缩写&#xff0c;是一种用于将私有网络内部IP地址转换为公共网络IP地址的技术。NAT最初被设计用于解决IPv4地址短缺的问题&#xff0c;但现在也被广泛用于在家庭和企业网络中共享单个公共IP地址。 NAT…

Hadoop入门(二十二)Mapreduce的求平均值程序

一、简介 求平均值是统计中最常使用到的&#xff0c;现在使用Mapreduce在海量数据中统计数据的求平均值。 二、例子 &#xff08;1&#xff09;实例描述 给出三个文件&#xff0c;每个文件中都存储了若干个数值&#xff0c;求所有数值中的求平均值。 样例输入&#xff1a; …

mysql添加新用户

新建用户 create user ‘kejin’‘localhost’ identified by ‘123456’; 删除用户 DROP USER ‘kejin’‘localhost’; 为所有数据库/表赋予 CREATE 和 INSERT 权限&#xff1a; GRANT CREATE, INSERT ON . TO ‘myuser’‘localhost’; 验证给用户赋予的全权限&#xff…

jzoj1610(初中)-导弹【最大匹配,最短路,二分答案】

正题 题目大意 有KKK个点&#xff0c;NNN个点a∈Aa\in Aa∈A&#xff0c;MMM个点b∈Bb\in Bb∈B。 给x∈Bx\in Bx∈B点集匹配一个y∈Ay\in Ay∈A点集的点&#xff0c;使他之间的最长最短路径最短。 解题思路 FlodyFlodyFlody暴力预处理最短路&#xff0c;然后二分答案midmidmi…

Debug ASP.NET Core 2.0源代码

首先你的VS必须为VS 2017 15.3或以上版本。 打开你的Startup类&#xff0c;在ConfigureServices方法上设置个断点&#xff0c;按F5 Debug应用。 在Call Stack&#xff08;调用堆栈&#xff09;窗口&#xff0c;我们只能看到自己的代码。打开VS tools&#xff08;工具&#xff…

Hadoop入门(二十三)Mapreduce的求数量最大程序

一、简介 在文件中统计出现最多个数的单词&#xff0c;将其输出到hdfs文件上。 二、例子 &#xff08;1&#xff09;实例描述 给出三个文件&#xff0c;每个文件中都若干个单词以空白符分隔&#xff0c;需要统计出现最多的单词 …

解决微服务在docker上部署后无法连接数据库的问题

在利用docker部署完应用程序后&#xff0c;就接着考虑如何将程序连接到数据库。 但是过程中发现一些问题&#xff1a; 本地程序在打包后连接的是本地的数据库&#xff0c;在服务器上部署之后必须提供相同的环境才能部署成功。 这里博主用的是宝塔安装的mysql&#xff0c;并尝…

P3365,jzoj3894-改造二叉树【LIS,BST】

正题 题目大意 一棵二叉树&#xff0c;有点权。求修改最少的点使得这是一个BSTBSTBST。 解题思路 二叉查找树满足点权的中序单调递增。 所以跑一遍中序遍历&#xff0c;就变为了求修改多少遍使一个序列单调递增。 求最长上升就好了。可是要求修改的是整数&#xff0c;所以需…

我心中的ASP.NET Core 新核心对象WebHost(一)

以本系列文章向Fish 前辈的那篇我心中的ASP.NET 核心对象致敬。&#xff08;虽然不知道前辈现在在干什么&#xff09;。一晃就6年过去了&#xff0c;那首 郝云 的《回到那一天》怎么唱来着&#xff1f; 时光一晃&#xff0c;你就三十了。 而我们都变成了老了的程序员 ASP.NET …

Hadoop入门(二十四)Mapreduce的求TopK程序

一、简介 求TopK是算法中最常使用到的&#xff0c;现在使用Mapreduce在海量数据中统计数据的求TopK。 二、例子 &#xff08;1&#xff09;实例描述 给出三个文件&#xff0c;每个文件中都存储了若干个数值&#xff0c;求所有数值中的求Top 5。 样例输入&#xff1a; …

DML、DDl、DQL实战

表的创建与删除 create table 学生成绩( id int primary key, name char(10) not null, sex char(10) not null, 物理 int not null, 语文 int not null, 英语 int not null, 数学 int )DEFAULT CHARSETutf8mb4; drop table 学生成绩; DML 数据操纵语言DML主要有三种形式&a…

Scaffolding Template on Asp.Net Core Razor Page

Scaffolding Template Intro 我们知道在Asp.Net MVC中&#xff0c;如果你使用的EF的DBContext的话&#xff0c;你可以在vs中通过右键解决方案-添加控制器-添加包含视图的控制器&#xff0c;然后vs会根据你选择的Model自动生成相应的CURD的控制器和View&#xff0c;非常便利&…