SparkUI 中的重试是什么意思?

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

我在两个不同的实例中执行了 Spark:

  1. spark.sql.adaptive.coalescePartitions.enabled=false
  2. spark.sql.adaptive.coalescePartitions.enabled=true

在第一个实例中,阶段图有一些重试,而另一个则没有。

你能帮我理解重试在这里意味着什么以及为什么它要执行额外的数据洗牌吗?

第一: enter image description here

第二: enter image description here

apache-spark pyspark apache-spark-sql amazon-emr
2个回答
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 可能不适合您的数据集。并导致数据局部性问题并最终导致您面临的问题。


0
投票

retry
是什么意思?

这很可能意味着阶段内的某些任务失败,重试并成功

为什么要这样做

extra data shuffle

在第二个屏幕中,您有 3 个跳过的阶段

这通常意味着它们被缓存了,这就是它们没有被重新执行的原因

您在任何地方都使用

.cache
吗?

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