Apache spark groupByKey函数的机制

Apache spark groupByKey函数的机制,apache-spark,Apache Spark,我是一个新手,尝试了解Spark的内部实现。我做了一个测试来查看groupByKey的缩放行为。结果表明,执行时间与每个节点的核心数无关,但我可以看到,如果增加节点数,执行时间会大大减少 我知道这个操作在磁盘和网络上应该是瓶颈。那么,观察每个节点的核心数量是因为有限的网络和磁盘带宽?如果答案是肯定的,那么由于带宽线性增加,如果我增加节点数,执行时间会线性减少吗?如果有人根据groupByKey:)的实现对此进行解释,我们将不胜感激。一般来说groupByKey受到以下限制: 要洗牌的数据量 聚

我是一个新手,尝试了解Spark的内部实现。我做了一个测试来查看
groupByKey
的缩放行为。结果表明,执行时间与每个节点的核心数无关,但我可以看到,如果增加节点数,执行时间会大大减少


我知道这个操作在磁盘和网络上应该是瓶颈。那么,观察每个节点的核心数量是因为有限的网络和磁盘带宽?如果答案是肯定的,那么由于带宽线性增加,如果我增加节点数,执行时间会线性减少吗?如果有人根据
groupByKey
:)

的实现对此进行解释,我们将不胜感激。

一般来说
groupByKey
受到以下限制:

  • 要洗牌的数据量
  • 聚合的非惰性值集合的大小
  • 随后的垃圾收集

根据数据分布和集群拓扑,您可以通过增加节点数量来减少总体延迟,但最终它无法直接解决上述任何问题。此外,每个密钥都必须由一个执行者进行最终处理。

一般来说,
groupByKey
受到以下限制:

  • 要洗牌的数据量
  • 聚合的非惰性值集合的大小
  • 随后的垃圾收集

根据数据分布和集群拓扑,您可以通过增加节点数量来减少总体延迟,但最终它无法直接解决上述任何问题。此外,每个密钥最终都必须由一个执行器处理。

您到底是如何调整核心的?虚拟机?我的节点中有36个核心。在本测试中,我每个节点使用4个执行器,并将每个执行器的核心数从1更改为9:)您到底是如何调整核心数的?虚拟机?我的节点中有36个核心。在此测试中,我每个节点使用4个执行器,并将每个执行器的核心数从1更改为9:)