【发布时间】:2019-07-16 03:30:49
【问题描述】:
我正在 9 个节点中运行作业。
他们都会将一些信息写入文件,执行如下简单的写入操作:
dfLogging.coalesce(1).write.format('delta').mode('append').save('/dbfs/' + loggingLocation)
但是我收到了这个异常:
py4j.protocol.Py4JJavaError: 调用时出错 o106.保存。 :java.util.concurrent.ExecutionException: org.apache.spark.SparkException:作业因阶段失败而中止: 阶段 14.0 中的任务 1 失败 1 次,最近一次失败:丢失任务 14.0 阶段的 1.0(TID 259,本地主机,执行程序驱动程序):org.apache.hadoop.fs.ChecksumException:校验和错误: 文件:/dbfs/delta/Logging/_delta_log/00000000000000000063.json 在 0 exp:1179219224 得到:-1020415797
在我看来,由于并发性,spark 以某种方式失败并产生校验和错误。
是否有任何已知的情况可能导致它?
【问题讨论】:
-
没有合并可以工作吗?合并很容易导致内存问题,而且错误通常不是很有帮助。
-
尝试重新分区而不是合并。
dfLogging.repartition(1).write.format('delta').mode('append').save('/dbfs/' + loggingLocation) -
Bob Swain 同样的错误,即使没有合并。 @Rob 这确实有效,但我不明白为什么。您能否将其发布为包含更多详细信息的答案?
-
@FlavioDiasPs 已经发布了答案,希望对您有所帮助。
标签: apache-spark error-handling pyspark azure-databricks delta-lake