Scala 将文件写入blob容器时在根容器中创建空文件

Scala 将文件写入blob容器时在根容器中创建空文件,scala,azure-storage-blobs,databricks,azure-databricks,Scala,Azure Storage Blobs,Databricks,Azure Databricks,将数据从数据帧写入路径 path=rootcontainer/container1+“/”+文件名 df.重新划分(1) 写 .format(“com.databricks.spark.csv”) .选项(“标题”、“正确”) .选项(“分隔符”,分隔符) .选项(“报价单”、“\u0000”) .mode(SaveMode.Overwrite) .save(路径) 执行上述命令时,除了在rootcontainer/container1/fileName中创建实际文件外,它还在rootconta

将数据从数据帧写入路径 path=rootcontainer/container1+“/”+文件名 df.重新划分(1) 写 .format(“com.databricks.spark.csv”) .选项(“标题”、“正确”) .选项(“分隔符”,分隔符) .选项(“报价单”、“\u0000”) .mode(SaveMode.Overwrite) .save(路径)

执行上述命令时,除了在rootcontainer/container1/fileName中创建实际文件外,它还在rootcontainer/container1中创建空blob文件(fileName)


我们如何避免在根文件夹中创建空blob?

这是几种Azure blob存储工具(AZCopy、Data Factory、一些Spark作业等)中经常出现的情况。它源于这样一个事实,即目录/文件夹实际上并不存在于Blob存储中,而是命名约定的一部分。因此,这些工具中的一些创建0字节工件作为其流程的一部分来表示这些路径。有些工具在自我清理方面比其他工具做得更好,但实际上没有办法阻止它们的产生。一旦操作完成,您可以删除它们而不产生任何后果

这只是我的猜测,但有一件事可能会有所帮助,那就是使用DataLake存储而不是传统的Blob存储