当前位置: 首页 > 知识库问答 >
问题:

apache Spark--哪一个遇到的内存瓶颈更少--reduceByKey还是ReduceByKeyLocaly?

杨星纬
2023-03-14
def reduceByKey(partitioner: Partitioner, func: (V, V) ⇒ V): RDD[(K, V)]
def reduceByKeyLocally(func: (V, V) ⇒ V): Map[K, V]

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

除了ReduceByKeyLocal将结果作为映射返回给主程序之外,我看不出两者之间有多大区别。

共有1个答案

程和畅
2023-03-14

差别是深刻的。

使用reducebykey,这些对表示为RDD,这意味着数据仍然分布在集群中。这是必要的,当你在规模经营。

使用reduceByKeyLocaly,所有分区都返回到主服务器,合并到该计算机上的一个映射中。与collect操作类似,该操作将所有内容作为数组返回到主服务器,如果您在大规模操作,所有这些数据将完全淹没单个机器,从而破坏使用分布式数据抽象的目的。

 类似资料:
  • 我正在尝试使用SIMD指令(_mm256_add_pd、store、load等)优化C中的2D矩阵加法。然而,我并没有看到一个大的加速。使用一些计时代码,我看到的加速范围是.8x-1.5倍的朴素解决方案)。我想知道这是否是典型的?我想这可能是一个内存瓶颈,因为在这种情况下,计算似乎很少。我相信这应该给我的速度提高大约4倍,因为我正在做4次加法,所以我不完全确定瓶颈是什么。 我做了一些代码来演示我正

  • 对于 big 机器,比如 128 核,512GB 这种机器,一次性跑几百个相同 docker 容器 我发现开的越多,速度增长的越慢 cpu 是确实利用起来了,都是 100% RAM 容量只用了 30%,也没有发生 swap 但是速度就是起不来 我怀疑是内存带宽之类的跑满了?有什么工具可以看「内存带宽」的使用率? htop、glances 这类工具,只能看「内存容量」维度,看不到「内存带宽」维度

  • 我想了解接收器在火花流中是如何工作的。根据我的理解,将有一个接收器任务运行在执行器中,收集数据并保存为RDD的。当调用start()时,接收器开始读取。需要澄清以下内容。 null 想知道火花流和接收器的解剖。

  • 本文向大家介绍简述HBase的瓶颈相关面试题,主要包含被问及简述HBase的瓶颈时的应答技巧和注意事项,需要的朋友参考一下 解答: HBase的瓶颈就是硬盘传输速度。HBase的操作,它可以往数据里面insert,也可以update一些数据,但update的实际上也是insert,只是插入一个新的时间戳的一行。Delete数据,也是insert,只是insert一行带有delete标记的一行。Hb

  • 问题内容: 如果您的目标是测试MySQL列中是否存在字符串(类型为’varchar’,’text’,’blob’等),那么以下哪一项是更快/更有效/更好地使用,为什么? 或者,还有其他方法可以胜任这些方法吗? 与 问题答案: 正如kibibu在上述评论中指出的,FULLTEXT搜索绝对会更快。 但是 : 在我的测试中,它们的表现完全相同。它们都不区分大小写,并且通常会执行全表扫描,这在处理高性能M

  • 这是一位高级经理问的面试问题。 哪个更快? 我说过,这两者具有相同的执行速度,因为内部的表达式最终应计算为或。在这种情况下,两者的计算结果都为,条件中没有额外的条件指令。因此,两者的执行速度相同,我更喜欢while(1)。 但面试官自信地说:“检查一下你的基础,比要快。”(他不是在考验我的信心) 这是真的吗?