在mapreduce中使用键值对的重要性是什么?

时间:2014-12-28 12:19:02

标签: hadoop mapreduce

我是mapreduce的初学者。我看到的任何地方都只表明mapreduce使用键值对。但是我没有找到使用键值对的明确理由。

谢谢你提前!!

3 个答案:

答案 0 :(得分:3)

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

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

键和值不是数据的固有属性,但它们是由分析数据的人选择的。因此,要进行任何分析,我们必须指定我们正在寻找的东西(关键)以及它的价值(价值)。

答案 1 :(得分:1)

关键值将是有用的,例如,如果您在一个部门中有多个员工的group by子句,并且您想要查找每个部门中有多少员工,那么部门ID将是关键,而员工数量则表示为值。

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

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

现在mapper将读取say file1.txt,并将在键值对中逐行读取     1(键号为行号)1(值)     2(键为行号)2(值)     3(键为行号)3(值)

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

file1 as key 3 as value

其他映射器的输出将是

file2 as key 6 as value

然后reducer将该输入作为键值

file1 3
file2 6

并将产生最终的键值对,如:

MAX 6

答案 2 :(得分:0)

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