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

odopli94  于 2021-05-30  发布在  Hadoop
关注(0)|答案(3)|浏览(370)

我是mapreduce的初学者。在我看到的每个地方,它都只声明mapreduce使用键值对。但我没有找到使用键值对背后的明确原因。
谢谢,这是预付款!!

vc9ivgsu

vc9ivgsu1#

键值很有用,比如说在一个部门中有多个雇员的GROUPBY子句,并且你想找到每个部门中有多少雇员,那么department id就是键值,employee count就是键值。
假设您想在文件中找到最大数量,并假设文件为

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

其他Map器的输出将是

file2 as key 6 as value

然后reducer将该输入作为键值

file1 3
file2 6

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

MAX 6
b1payxdu

b1payxdu2#

hadoop主要用来做数据分析。在数据分析中,我们着眼于统计和/或逻辑技术来描述和说明、浓缩和重述以及评估数据。我们决不会修改数据。
hadoop处理结构化、非结构化和半结构化数据。与rdbms不同,schema不是静态的。如果使用静态模式,我们可以直接处理列,而不是键和值。
键和值不是数据的固有属性,而是由分析数据的人员选择的。所以,要做任何分析,我们必须指定我们要寻找的(关键)和它的价值(价值)。

jvidinwx

jvidinwx3#

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

相关问题