zoukankan      html  css  js  c++  java
  • MapReduce运行过程以及原理

     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)

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

  • 相关阅读:
    常见加密算法概述
    IDEA常见错误解决
    linux Find命令教程
    用注册表更改DNS的代码分享
    关于javascript中的typeof和instanceof介绍
    javascript instanceof,typeof的区别
    Javascript typeof 用法
    浅析JavaScript中的typeof运算符
    玩转Linux文件描述符和重定向
    shell脚本 批量转换目录下文件编码
  • 原文地址:https://www.cnblogs.com/jingblogs/p/5519036.html
Copyright © 2011-2022 走看看