Spark UI 中的重试是什么意思?

问题描述 投票:0回答:1

我在两个不同的实例中执行了spark(一个是spark.sql.adaptive.coalescePartitions.enabled=false,另一个是spark.sql.adaptive.coalescePartitions.enabled=true)。在第一个实例中,阶段图有一些重试,而其他则没有。 你能帮助我理解重试的含义以及它为什么要进行额外的数据洗牌吗?

第一个。 enter image description here

第二个: enter image description here

apache-spark pyspark apache-spark-sql amazon-emr
1个回答
0
投票

这里的

retry
是什么意思?

它只是表明 Spark 中的某个任务在执行过程中遇到错误,Spark 会自动重试几次然后放弃。

可以通过

spark.task.maxFailures
参数进行配置,默认为4。


为什么要执行额外的数据洗牌?

现在,正如 Spark SQL 性能调优指南中提到的

spark.sql.adaptive.coalescePartitions.enabled

当 true 且

spark.sql.adaptive.enabled
为 true 时,Spark 将根据目标大小(由
spark.sql.adaptive.advisoryPartitionSizeInBytes
指定)合并连续的 shuffle 分区,以避免过多的小任务。

它暗示在您的情况下,这种优化合并没有发生,这可能会导致数据分布不均匀,增加任务失败和重试的可能性。

这也可能是额外数据洗牌的原因。当自适应分区关闭时,

spark.sql.shuffle.partitions
可能会接管,默认值 200 可能不适合您的数据集。并导致数据局部性问题并最终导致您面临的问题。

© www.soinside.com 2019 - 2024. All rights reserved.