Spark并行化会导致分区分配不均匀

时间:2019-05-25 10:38:12

标签: apache-spark partitioning

假设我们有10个节点,每个节点有2个核心。我们将defaultParallelism设置为2*10=20,希望如果我们调用sc.parallelize(1 to 20),则将为每个节点分配2个分区。由于某种原因,这种假设在某些情况下被证明是不正确的。根据某些条件,Spark有时会在一个节点上放置两个以上的分区,有时会跳过一个或多个节点。这会导致严重的偏差,并且重新分区无济于事(因为我们无法控制将分区放置到物理节点上的情况。)

  • 为什么会这样?
  • 如何确保为每个节点准确分配2个分区?

此外,spark.locality.wait的价值也设置为999999999s

发生这种情况的DAG如下所示。来自阶段0的并行化平均分配分区,而阶段1中的并行化则没有。总是这样-为什么?

DAG

链接related question

0 个答案:

没有答案