gpt4 book ai didi

java - MapReduce中是否可以在同一个键下输出多个值?

转载 作者:可可西里 更新时间:2023-11-01 14:51:33 25 4
gpt4 key购买 nike

如果我正在运行一个 MapReduce 作业,我可以拥有:

context.write(key, value1)
context.write(key, value2)
context.write(key, value3) ....

在我的 mapper 函数中?这会像 Java 中的 Map 类一样并覆盖预先存在的值吗?

最佳答案

是的,同一个键可以有多个值。MapReduce 中的map 函数不像Java 中的Map 结构。但是,如果这个类比对您来说更容易的话,您可以将其视为 Multimap 或哈希表:您可以将多个值放入同一个桶中。

请参阅以下 WordCount 程序中的示例*(请参阅第二个映射器,发出两次键 C)。这些键值对将在同一个桶中结束( reduce task ):

enter image description here

但是,我有一个问题:出于效率原因,当映射端连接适用时,您通常应该尽量避免这种减少端连接的情况,就像您的情况一样。例如,如果您可以在映射器中发出 (key, [value1,value2,value3,...]),这通常会更快,因为需要传输和连接的数据更少。由于您已经知道这三个值将最终出现在同一个 reducer 中,因此您可以像 reducer 一样处理它们,或者进行某种预处理以帮助 reducer 执行更少的计算(或者您可以使用组合器来这个目的)。在上图中,首先从映射器发出 (C,2) 会更快。

*reduce 阶段在图中没有正确描述,但这与问题无关。

关于java - MapReduce中是否可以在同一个键下输出多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44538028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com