gpt4 book ai didi

apache-spark - 我如何知道 Spark 连接是高效的共同分区输入连接?

转载 作者:行者123 更新时间:2023-12-01 12:42:16 25 4
gpt4 key购买 nike

我尝试通过利用一些分区策略来优化一段 PySpark 代码,特别是对两个 RDDS 进行共同分区,联合它们,并对它们调用reduce 操作(它比这更复杂,但这是一个很好的方法)初始模型)。

查看图中的图表:

img
(来源:reactivesoftware.pl)

共同分区连接非常高效且精简。我的问题是,我如何知道我的 join/reduce 是否正确地共同分区?我应该在 Spark 应用程序 UI 上看到哪些统计信息?我应该看到哪些性能改进?

最佳答案

当 Spark 中数据未正确共同分区时,系统必须执行洗牌(即将数据移动到新的临时分区以创建执行转换所需的联接。)

因此,两者之间的关键区别在于随机读取和写入时间量,即对于窄依赖关系,您应该看到最少的读取和零写入,而对于广泛的依赖关系,您会看到显着的随机写入。您可以在Spark UI的阶段详细信息中查看shuffle读写统计信息。

通过消除广泛的依赖关系,您确实会看到两个性能提升:

  • 随机播放本身会占用大量 IO 和网络资源。
  • 由于拥有广泛的依赖链,洗牌操作通常成为下游其他操作的瓶颈。

澄清一点:reduce 操作总是会打乱顺序以聚合数据,因此分区策略仅适用于连接。

关于apache-spark - 我如何知道 Spark 连接是高效的共同分区输入连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37266151/

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