scala - 将文件写入 blob 容器时在根容器中创建空文件
问题描述
将数据从数据帧写入路径 path = rootcontainer/container1 + "/" + fileName df.repartition(1) .write .format("com.databricks.spark.csv") .option("header", "true ") .option("delimiter", Delimiter) .option("quote", "\u0000") .mode(SaveMode.Overwrite) .save(path)
执行上述命令时,除了在 rootcontainer/container1/fileName 中创建实际文件外,它还在 rootcontainer/container1 中创建空 blob 文件(fileName)
我们如何避免在根文件夹中创建空 blob?
解决方案
这在几个 Azure Blob 存储工具(AZCopy、数据工厂、一些 Spark 作业等)中经常发生。它源于目录/文件夹实际上并不存在于 Blob 存储中,而是命名约定的一部分。因此,其中一些工具会创建 0 字节工件作为其过程的一部分来表示这些路径。有些工具比其他工具在自己清理后做得更好,但确实没有办法阻止它们的产生。操作完成后,您可以删除它们而不会产生任何后果。
这只是我的一个猜测,但可能有帮助的一件事是使用 Data Lake Storage 而不是传统的 Blob 存储。
推荐阅读
- eclipse - eclipse下无法运行junit5(2020-06(4.16.0))
- google-apps-script - 基于列谷歌脚本中的单元格分配值
- c++ - OpenSSL 的 EVP_DigestSignFinal() 创建无效签名
- python - Python:以特定顺序提取给定数组的元素
- postgresql - postgres pg_dump 数据库备份
- swift - kotlin 中的 WebSockets
- python - 从 python 中访问 tensorflow/core/framework/cpu_allocator_impl.cc
- c# - 在 ActionFilterAttribute 中查找过滤器
- python - 在字典列表中查找键值,然后替换其他值
- python - 我想根据行内的条件从烧瓶 db.execute 查询中删除一行