gpt4 book ai didi

apache-spark - 写入文件时出现Databricks Checksum错误

转载 作者:行者123 更新时间:2023-12-03 08:21:06 27 4
gpt4 key购买 nike

我正在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在某种程度上失败了,并生成校验和错误。

是否有可能导致这种情况的已知情况?

最佳答案

因此,发生了几件事情,它应该解释为什么合并可能不起作用。

  • 合并的作用实际上是将每个工作程序上的分区合并在一起。例如,如果您有三个工作程序,则可以执行Coalesce(3)合并每个工作程序上的分区。
  • 分区的作用是重新整理数据以增加/减少总分区数。在您的情况下,如果您有多个工作线程,并且需要单个输出,则必须使用repartition(1),因为您希望在写入之前将数据放在单个分区上。

  • 为什么合并不会起作用?
    Spark 限制了合并期间的混洗。因此,当您使用合并时,您无法执行跨不同工作人员的完全改组,而在使用分区时,您可以进行全面的改编,尽管这是一项昂贵的操作。

    这是可行的代码:
    dfLogging.repartition(1).write.format('delta').mode('append').save('/dbfs/' + loggingLocation)

    关于apache-spark - 写入文件时出现Databricks Checksum错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57013051/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com