azure - 写入 Azure Blob 存储。一切看起来都很好,但它创建了很多临时文件

标签 azure azure-blob-storage databricks

按照此链接中编写的代码进行操作。 https://gist.github.com/Zifah/ba0c3771069a11ba53969b000b038b82/revisions

它创建了很多临时文件。请帮忙。

最佳答案

这是运行任何 Spark 作业来创建这些文件时的预期行为。

启用 DBIO 事务提交后,以 startedcomfilled 开头的元数据文件将伴随 Apache Spark 作业创建的数据文件。一般来说,您不应该直接更改这些文件。相反,请使用 VACUUM 命令来清理文件。

以下三个属性的组合将有助于禁止写入所有以“_”开头的事务文件。

  1. 我们可以使用以下方法禁用 Spark Parquet Write 的事务日志

spark.sql.sources.commitProtocolClass = org.apache.spark.sql.execution.datasources.SQLHadoopMapReduceCommitProtocol

这将有助于禁用已提交和已启动的文件,但仍会生成 _SUCCESS、_common_metadata 和 _metadata 文件。

  • 我们可以使用 来禁用 _common_metadata 和 _metadata 文件
  • parquet.enable.summary-metadata=false

  • 我们还可以使用
  • 禁用 _SUCCESS 文件

    mapreduce.fileoutputcommitter.marksuccessfuljobs=false

    有关更多详细信息,请参阅“Transactional Writes to Cloud Storage with DBIO”和“Stop Azure Databricks auto creating files”和“How do I prevent _success and _committed files in my write output?”。

    希望这有帮助。如果您还有任何疑问,请告诉我们。

    关于azure - 写入 Azure Blob 存储。一切看起来都很好,但它创建了很多临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60127160/

    相关文章:

    azure - 如何在.NET Core项目中使用WindowsAzure.Storage.Table?

    azure - 如何延迟和安排一个阶段以仅在 Azure Devops yaml 管道中运行最新版本?

    Azure 本地开发设置 - 缓存、队列、documentdb

    python - 如何从 databricks 中的库导入类?

    azure - 如何从azure eventhub获取记录到databricks

    python - 使用 databricks 运行时 ML 8.2 创建本地 conda 环境

    performance - 为什么不经常访问的 Azure Blob 存储速度很慢?

    git - 如何正确设置 Azure DevOps 和 GitHub 之间的双向同步

    node.js - 如何读取 Azure Blob URL?

    azure - 延迟触发的耐用功能