apache-spark - 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
重新安排后的次数多,- 然后 Job 将停止并且不再执行阶段。
- 3 个正在运行的任务将完成,仅此而已。
- 然后,如果 4 个中的一个失败的次数比
一个多阶段的作业必须停止,因为只有前一阶段的所有任务都完成后才能开始新的阶段。
推荐阅读
- python - CSV:如何从列表列表(包含列表的列表)中找到最接近的匹配/最接近的值?
- php - 根据 laravel-8 中的 product_id 显示所有数据
- sql - 获取 BigQuery 中每个键的下一个值(如果存在)
- javascript - 如何在 videojs 上添加质量选择器选项
- flutter - 无法使用 Flutter Mobile 上传到 Firebase 存储
- r - R查找多个数据框的匹配列名
- python - 无法在 django 中保存散列密码
- flutter - placemarkFromCoordinates() 在颤振 goecoding 插件中不起作用
- android - 拖放事件后的不可见视图
- swift - 如何使用 AFNetworking 实现 Codable