问题的标题解释了我的问题是什么。我已经阅读了多篇课文,在我遇到这一行的地方找到了答案通过使用组合器并利用跨多个输入保持状态的能力,通常可以实质性地减少需要从Map器洗牌到还原器的键值对的数量和大小。我不能理解这个概念。详细的回答和解释,并举例说明,将是非常有帮助的。如何培养理解这些概念的直觉?
oxiaedzo1#
如果你已经觉得“减速机”的概念舒适,一个组合器的概念将很容易。合路器可以看作是map阶段的一个小型减速机。我的意思是什么?让我们看一个例子:假设您正在处理经典的wordcount问题,您知道Map器会为每个单词发出一个键值对。然后reducer将把这个键值对作为输入,并对它们进行求和。假设Map程序收集一些键值对,如:
<key1,1>, <key2,1>, <key1,1>, <key3,1>, <key1,1>
如果您不使用组合器,这4个键值对将被发送到reducer。但是使用组合器,我们可以在Map器中执行预还原,因此Map器的输出将是:
<key1,3>, <key2,1>, <key3,1>
在这个简单的示例中,通过使用组合器,您将键值对的总数从5减少到3,这将减少网络通信量,并在洗牌阶段获得更好的性能。
1条答案
按热度按时间oxiaedzo1#
如果你已经觉得“减速机”的概念舒适,一个组合器的概念将很容易。合路器可以看作是map阶段的一个小型减速机。我的意思是什么?让我们看一个例子:假设您正在处理经典的wordcount问题,您知道Map器会为每个单词发出一个键值对。然后reducer将把这个键值对作为输入,并对它们进行求和。假设Map程序收集一些键值对,如:
如果您不使用组合器,这4个键值对将被发送到reducer。但是使用组合器,我们可以在Map器中执行预还原,因此Map器的输出将是:
在这个简单的示例中,通过使用组合器,您将键值对的总数从5减少到3,这将减少网络通信量,并在洗牌阶段获得更好的性能。