Spark 中转换的失败处理



我将所有数据从 s3 读入 pyspark 数据帧。 我在数据帧上应用筛选器转换。然后将数据帧写入 S3。

假设数据帧有 10 个分区,每个分区 64MB。 现在假设对于分区 1、2 和 3,筛选和写入成功,并且数据已写入 S3。

现在让我们说分区 4 的过滤器错误。

之后会发生什么。spark 会继续处理所有剩余分区并离开分区 4,还是程序会在只写入 3 个分区后终止?

非本地操作模式的相关参数为:spark.task.maxFailures

  • 如果您有 32 个任务和 4 个执行程序,其中 7 个已运行,4 个正在运行,在该阶段有 21 个任务在等待,
    • 然后,如果 4 个中的一个失败的次数超过spark.task.maxFailures重新安排后的次数,
      • 然后作业将停止,不再执行任何阶段。
      • 3 个正在运行的任务将完成,仅此而已。

多阶段作业必须停止,因为新阶段只有在前一阶段的所有任务完成时才能启动。

转换是全部操作或无操作。在上述情况下,Spark 将崩溃并显示分区 4 的错误。

最新更新