Apache Spark:一个执行程序可以在 spark 中保存多少个分区?执行者之间的分区如何分布(机制)?

Bis*_*Ten 8 apache-spark apache-spark-sql

我有兴趣了解以下火花并行和分区的细节

  1. 一个执行器可以在 spark 中保存多少个分区?
  2. 执行者之间的分区如何分布(机制)?
  3. 如何设置分区的大小。想知道相关的配置参数。
  4. 执行器是否将所有分区存储在内存中?如果不是,当溢出到磁盘时,它是将整个分区溢出到磁盘还是将部分分区溢出到磁盘?5 当每个执行程序有 2 个内核但该执行程序中有 5 个分区时

the*_*tom 1

这不是正确的看待方式。执行者什么都不持有,它只是工作。

  • Partition 由已分配给 Executor 的 Core 处理。执行器通常有 1 个核心,但可以有超过 1 个这样的核心。

  • 应用程序具有可转化为 1 个或多个作业的操作。

  • 作业有阶段(基于随机边界)。

  • 阶段有任务,任务的数量取决于分区的数量。

  • 分区的并行处理取决于分配给执行器的核心数量。

Spark 在核心、内存和磁盘方面都是可扩展的。与您的问题相关的后两个意味着,如果分区不能全部放入工作线程的内存中,那么该分区或更多分区将全部溢出到磁盘。