gpt4 book ai didi

scala - apache spark - 哪一个遇到较少的内存瓶颈 - reduceByKey 或 reduceByKeyLocally?

转载 作者:行者123 更新时间:2023-12-02 09:19:49 25 4
gpt4 key购买 nike

我查看了 API 并找到了以下两者的文档-

def reduceByKey(partitioner: Partitioner, func: (V, V) ⇒ V): RDD[(K, V)]

它使用关联的 reduce 函数合并每个键的值。这还将在将结果发送到 reducer 之前在每个映射器上执行本地合并,类似于 MapReduce 中的“组合器”。

def reduceByKeyLocally(func: (V, V) ⇒ V): Map[K, V]

它使用关联的 reduce 函数合并每个键的值,但立即将结果作为 Map 返回给 master。这还将在将结果发送到 reducer 之前在每个映射器上执行本地合并,类似于 MapReduce 中的“组合器”。

除了 reduceByKeyLocally 将结果作为 map 返回给 master 之外,我看不出两者有什么区别。

最佳答案

差异是深远的。

使用reduceByKey,这些对被表示为一个RDD,这意味着数据在集群中保持分布。当您大规模运营时,这是必要的。

使用 reduceByKeyLocally,所有分区都返回到 master 并合并到该台机器上的单个 Map 中。类似于 collect 操作,它将所有内容作为 Array 返回给 master,如果您大规模操作,所有这些数据将完全淹没一台机器并击败使用分布式数据抽象的目的。

关于scala - apache spark - 哪一个遇到较少的内存瓶颈 - reduceByKey 或 reduceByKeyLocally?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43622873/

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