博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MapReduce运行过程以及原理
阅读量:5357 次
发布时间:2019-06-15

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

 1.map和reduce

MapReduce任务过程分为两个处理阶段:map阶段和reduce阶段。每个节点都以键值对作为输入和输出,其类型由程序员来选择。程序员还需要编写两个函数:map函数和reduce函数。

map阶段的输入时NCDC原始数据。我们选择文本格式作为输入格式,将数据集的每一行作为文本输入。键是某一行起始位置相对于文本起始位置的偏移量,不过我们不需要这个信息,所以将其忽略。

我们的map函数很简单。由于我们只对年份和气温属性感兴趣,所以只需要取出这两个字段数据。在本例中,map函数只是一个数据准备阶段,通过这种方式来准备数据,使reducer函数能够继续对它进行处理:即找出每年的最高气温。map函数韩式一个比较适合去除已损记录的地方:此处,我们筛掉缺失的,可疑的或者错误的气温数据。

 

为了全面了解mao的工作方式,我们考虑以下输入数据的示例数据:

  0067011990999991950051507004...9999999N9+00001+9999999999...

  0043011990999991950051512004...9999999N9+00221+9999999999...

  0043011990999991950051518004...9999999N9-00111+9999999999...

这些行以键值对的方式作为map函数的输入:

(0,0067011990999991950051507004...9999999N9+00001+9999999999...)

(106,0043011990999991950051512004...9999999N9+00221+9999999999...)

(212,0043011990999991950051518004...9999999N9-00111+9999999999...)

键(key)是文件中的行偏移量,map函数并不需要这个信息,所以将其忽略。map函数的功能仅限于提取年份和气温信息(以粗体显示),并将它们作为

输出(气温值已用整数表示):

(1950,0)

(1950,22)

(1950,-11)

(1949,111)

(1949,78)

map函数的输出经由MapReduce框架处理后,最后发送到reduce函数。这个处理过程基于键来对键值对进行排序和分组。因此,在这一示例中,reduce函数看到的是如下输入:

(1949,[111,78])

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

每一年份后紧跟着一系列气温数据。reduce函数现在要做的是遍历整个列表从中找出最大的读数:

(1949,111)

(1950,22)

这是最终输出结果:每一年的全球最高气温记录。

 

转载于:https://www.cnblogs.com/jingblogs/p/5519036.html

你可能感兴趣的文章
原生JS轮播-各种效果的极简实现
查看>>
计数器方法使用?
查看>>
带你全面了解高级 Java 面试中需要掌握的 JVM 知识点
查看>>
sonar结合jenkins
查看>>
解决VS+QT无法生成moc文件的问题
查看>>
AngularJs练习Demo14自定义服务
查看>>
关于空想X
查看>>
CF1067C Knights 构造
查看>>
[BZOJ2938] 病毒
查看>>
webstorm修改文件,webpack-dev-server不会自动编译刷新
查看>>
Scikit-learn 库的使用
查看>>
CSS: caption-side 属性
查看>>
python 用数组实现队列
查看>>
认证和授权(Authentication和Authorization)
查看>>
CSS3中box-sizing的理解
查看>>
传统企业-全渠道营销解决方案-1
查看>>
Lucene全文检索
查看>>
awk工具-解析1
查看>>
推荐一款可以直接下载浏览器sources资源的Chrome插件
查看>>
CRM product UI里assignment block的显示隐藏逻辑
查看>>