我正在9个节点上运行作业。
所有这些都将向文件进行一些简单的写操作,如下所示:
dfLogging.coalesce(1).write.format('delta').mode('append').save('/dbfs/' + loggingLocation)
但是我收到此异常:
py4j.protocol.Py4JJavaError: An error occurred while calling o106.save. : java.util.concurrent.ExecutionException: org.apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 14.0 failed 1 times, most recent failure: Lost task 1.0 in stage 14.0 (TID 259, localhost, executor driver): org.apache.hadoop.fs.ChecksumException: Checksum error: file:/dbfs/delta/Logging/_delta_log/00000000000000000063.json at 0 exp: 1179219224 got: -1020415797
在我看来,由于并发性,spark在某种程度上失败了,并生成校验和错误。
是否有可能导致这种情况的已知情况?
最佳答案
因此,发生了几件事情,它应该解释为什么合并可能不起作用。
为什么合并不会起作用?
Spark 限制了合并期间的混洗。因此,当您使用合并时,您无法执行跨不同工作人员的完全改组,而在使用分区时,您可以进行全面的改编,尽管这是一项昂贵的操作。
这是可行的代码:
dfLogging.repartition(1).write.format('delta').mode('append').save('/dbfs/' + loggingLocation)
关于apache-spark - 写入文件时出现Databricks Checksum错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57013051/