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)

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

  • 相关阅读:
    Linux系统管理上机作业2
    Linux系统管理上机作业1
    作业
    作业
    作业2
    作业
    作业
    第三章
    第二章
    第一章:计算机网络参考模型
  • 原文地址:https://www.cnblogs.com/jingblogs/p/5519036.html
Copyright © 2011-2022 走看看