【问题标题】:what is the importance of using key value pairs in mapreduce?在 mapreduce 中使用键值对的重要性是什么?
【发布时间】:2017-05-10 20:42:49
【问题描述】:

我是 mapreduce 的初学者。我到处看到它只说明 mapreduce 使用键值对。但我没有找到使用键值对背后的明确原因。

先谢谢了!!

【问题讨论】:

    标签: hadoop mapreduce


    【解决方案1】:

    Hadoop主要用于做数据分析。在数据分析中,我们研究统计和/或逻辑技术来描述和说明、浓缩和概括以及评估数据。我们绝不会修改数据。

    Hadoop 处理结构化、非结构化和半结构化数据。 Schema 不像 RDBMS 那样是静态的。如果我们有静态模式,我们可以直接处理列而不是键和值。

    键和值不是数据的内在属性,而是由分析数据的人选择的。因此,要进行任何分析,我们必须指定我们正在寻找什么(Key)以及它的价值(value)。

    【讨论】:

      【解决方案2】:

      如果您在一个部门中有多个员工的 group by 子句,并且您想知道每个部门有多少员工,那么键值将很有用,那么部门 ID 将是键,员工数表示为值。

      假设你想在文件中找到最大的数字并说文件是

      file1.txt
      1 
      2
      3
      file2.txt
      4
      5
      6
      

      现在映射器将读取文件 1.txt 并将在键值对中逐行读取为 1(键作为行号) 1(值) 2(键作为行号) 2(值) 3(key作为行号)3(value)

      说只产生一个输出(比如包括组合器):

      file1 as key 3 as value
      

      其他映射器的输出将是

      file2 as key 6 as value
      

      然后reducer会将该输入作为键值作为

      file1 3
      file2 6
      

      并将生成最终的键值对,如下所示:

      MAX 6
      

      【讨论】:

        【解决方案3】:

        让我们举一个简单的字数统计示例。 在字数统计程序中,mapper 接收简单的偏移量作为键和整行作为值。 我们将行拆分为单词并写入 (word,1) 作为 mapper 的输出。现在 reducer 将接收单词作为输入键和可迭代的值对象,我们遍历并获取该单词的总数。在 reducer 接收输入之前,hadoop 会进行混洗和排序,因此您可以按排序顺序将输入输入到 reducer,并且因为 reducer 会将同一键的所有映射器的输出转换为组合格式。现在,如果我们不将所有内容生成为键和值格式,我们将无法组合来自所有映射器的所有记录以将其提供给单个 reducer。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-02-02
          • 1970-01-01
          • 2014-08-25
          • 2014-05-09
          • 2011-02-21
          • 2016-09-21
          • 2021-12-09
          相关资源
          最近更新 更多