Map-Reduce的逻辑过程

假设我们需要处理一批有关天气的数据,其格式如下:

  • 按照ASCII码存储,每行一条记录
  • 每一行字符从0开始计数,第15个到第18个字符为年
  • 第25个到第29个字符为温度,其中第25位是符号+/-

0067011990999991950051507+0000+

0043011990999991950051512+0022+

0043011990999991950051518-0011+

0043012650999991949032412+0111+

0043012650999991949032418+0078+

0067011990999991937051507+0001+

0043011990999991937051512-0002+

0043011990999991945051518+0001+

0043012650999991945032412+0002+

0043012650999991945032418+0078+

现在需要统计出每年的最高温度。

Map-Reduce主要包括两个步骤:Map和Reduce

每一步都有key-value对作为输入和输出:

  • map阶段的key-value对的格式是由输入的格式所决定的,如果是默认的TextInputFormat,则每行作为一个记录进程处理,其中key为此行的开头相对于文件的起始位置,value就是此行的字符文本
  • map阶段的输出的key-value对的格式必须同reduce阶段的输入key-value对的格式相对应

对于上面的例子,在map过程,输入的key-value对如下:

(0, 0067011990999991950051507+0000+)

(33, 0043011990999991950051512+0022+)

(66, 0043011990999991950051518-0011+)

(99, 0043012650999991949032412+0111+)

(132, 0043012650999991949032418+0078+)

(165, 0067011990999991937051507+0001+)

(198, 0043011990999991937051512-0002+)

(231, 0043011990999991945051518+0001+)

(264, 0043012650999991945032412+0002+)

(297, 0043012650999991945032418+0078+)

在map过程中,通过对每一行字符串的解析,得到年-温度的key-value对作为输出:

(1950, 0)

(1950, 22)

(1950, -11)

(1949, 111)

(1949, 78)

(1937, 1)

(1937, -2)

(1945, 1)

(1945, 2)

(1945, 78)

在reduce过程,将map过程中的输出,按照相同的key将value放到同一个列表中作为reduce的输入

(1950, [0, 22, –11])

(1949, [111, 78])

(1937, [1, -2])

(1945, [1, 2, 78])

在reduce过程中,在列表中选择出最大的温度,将年-最大温度的key-value作为输出:

(1950, 22)

(1949, 111)

(1937, 1)

(1945, 78)

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

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

相关文章

(HDU)1019 --Least Common Multiple(最小公倍数)

描述 一组正整数的最小公倍数(LCM)是可以被集合中所有数字整除的最小正整数。 例如,5,7和15的LCM为105。输入 输入将包含多个问题实例。 输入的第一行将包含指明问题实例数量的单个整数。 每个实例将由形式为m n1 n2 n3 ... nm的单行组成&…

如何将exe文件在linux下执行,如何在Linux系统下查找可执行文件

可执行文件是指可移植可执行的文件,用于程序的执行,那么Linux下要如何查找可执行文件呢?下面小编就给大家介绍下Linux中查找可执行文件的方法,一起来了解下吧。linux下查找可执行文件ls -F|grep “*”这样就可以了!ls …

前端学习(2176):vue-router的路由的嵌套使用

app.vue <template><div id"app"><router-link to"/home">首页</router-link><router-link to"/about">关于</router-link><router-link v-bind:to"/user/userId">用户</router-link&g…

下拉列表项过多会导致浏览器卡死

下拉列表项过多会导致浏览器卡死。 可以采用异步的加载方式&#xff0c;类似手机新闻的推送&#xff0c;定制下拉列表组件&#xff0c;一屏一屏的加载数据到浏览器端。

linux服务器做301跳转,nginx 实现当找不到文件时实现301跳转

server {server_name test.com;rewrite ^/(.*) http://www.test1.com/$1 permanent;}last – 基本上都用这个Flag。break – 中止Rewirte&#xff0c;不在继续匹配redirect – 返回临时重定向的HTTP状态302permanent – 返回永久重定向的HTTP状态301Nginx的重定向用到了Nginx的…

前端学习(2177):vue-router得参数传递

app.vue <template><div id"app"><router-link to"/home">首页</router-link><router-link to"/about">关于</router-link><router-link v-bind:to"/user/userId">用户</router-link&g…

如何进行正确的SQL性能优化

在SQL查询中&#xff0c;为了提高查询的效率&#xff0c;我们常常采取一些措施对查询语句进行SQL性能优化。本文我们总结了一些优化措施&#xff0c;接下来我们就一一介绍。 1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE %parm1%—— 红色标识位置的百分号会导致相关…

SharpZipLib压缩解压

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using ICSharpCode.SharpZipLib.Zip; namespace Test{ /// <summary> /// 压缩 /// </summary> public class Compress { /// <sum…

前端学习(2178):vue-router得参数传递二

app.vue <template><div id"app"><router-link to"/home">首页</router-link><router-link to"/about">关于</router-link><button click"userClick">用户</button><button clic…

linux sha1sum命令,讲解Linux中校验文件的MD5码与SHA1码的命令使用

md5sum用法&#xff1a;md5sum [选项]... [文件]...显示或检查 MD5(128-bit) 校验和。若没有文件选项&#xff0c;或者文件处为"-"&#xff0c;则从标准输入读取。-b, --binary 以二进制模式读取-c, --check 从文件中读取MD5 的校验值并予以检查-…

saltstack-部署

安装epel源&#xff08;所有主机安装&#xff09; [rootsalt-server /]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo 安装saltmaster安装salt [rootsalt-server /]# yum -y install salt-master client安装 [rootsalt-client-01 /]# yum …

C#预编译选项

#define AAA定义一个预编译选项必须定义在cs代码第一行 #if AAA……#elseif……#endif 也可以在 项目属性——“生成”选项卡上&#xff0c;键入要在“条件编译符号”框中定义的符号&#xff1a;AAA

linux系统登陆问题,Linux之登陆问题

今天早上在使用Linux的时候进入终端输入startx&#xff0c;然后退出图形界面&#xff0c;进入了命令模式&#xff0c;可能是Ubuntu 14.04的问题&#xff0c;不知怎么就没有响应&#xff0c;我就强行重启了一下操作系统&#xff0c;然后进去发现在使用管理员账号登录时一直是重复…

linux--GCC简单用法

gcc是linux下最常用的一款c编译器&#xff0c;对应于CPP 有相应的g工具&#xff0c;debug有gdb&#xff0c;只是还不会用。 个人感觉gcc确实是个好东西&#xff0c;完全可以直接在gedit下编程然后写个shell脚本用gcc编译&#xff0c;不比一些IDE麻烦多少&#xff0c;某些IDE实在…

前端学习(2180):vue-router全局导航守卫

app.vue <template><div id"app"><router-link to"/home">首页</router-link><router-link to"/about">关于</router-link><button click"userClick">用户</button><button clic…

Win7下IIS7 ASP出现HTTP 500错误的解决办法

在IIS7里面的IIS设置要开启启用父路径这个选项&#xff0c;之后就可以了&#xff0c;当然为了调试程序可以打开“ASP设置选 项-调试属性”里面的一些调试功能&#xff0c;方便程序的调试。具体可以这样做&#xff1a; ★启用父路径 打开IIS7的功能视图 “ASP设置选项-行为”里“…

Visual Studio调试ASP代码

启用服务端脚本调试后&#xff0c;可以用VS调试——附加到进程——w3wp然后就可以像调试C#一样设置断点进行调试了。

(HDU)1058 --Humble Numbers( 丑数)

题目链接&#xff1a;http://vjudge.net/problem/HDU-1058 这题有点难度&#xff0c;自己写了半天依旧TLE&#xff0c;参考了其他人的博客。 http://blog.csdn.net/pythonfx/article/details/7292835 http://blog.csdn.net/x_iya/article/details/8774087 第二个人的博客用的是…