gpt4 book ai didi

azure - 无法通过 Databricks 笔记本从 Azure 存储容器中删除目录

转载 作者:行者123 更新时间:2023-12-02 06:25:58 25 4
gpt4 key购买 nike

我正在尝试从安装到 DBFS 的 Azure 存储容器中删除空目录

我能够列出所有没有文件的目录。

%sh
find /dbfs/mnt/test/logs/2021 -empty -type d

结果:

/dbfs/mnt/test/logs/2021/02/12
/dbfs/mnt/test/logs/2021/02/15
/dbfs/mnt/test/logs/2021/02/16

但是当我尝试删除它们时,由于资源暂时不可用而失败。

%sh
find /dbfs/mnt/test/logs/ -type d -exec rmdir {} \;

结果:

rmdir: failed to remove '/dbfs/mnt/test/logs/': Directory not empty
rmdir: failed to remove '/dbfs/mnt/test/logs/2021': Directory not empty
rmdir: failed to remove '/dbfs/mnt/test/logs/2021/02': Directory not empty
rmdir: failed to remove '/dbfs/mnt/test/logs/2021/02/12': Resource temporarily unavailable

我能够成功删除超过特定天数的文件..删除目录不起作用。 (以下命令删除工作文件

%sh
find /dbfs/mnt/test/logs/ -name "*.log" -type f -mtime +5 -exec rm -f {} \;

最佳答案

首先要记住 - DBFS 是云 Blob 存储的抽象,其中没有真正的目录 - 它们只是用于组织数据的前缀。如果你这样做%sh ls -ls /dbfs/mnt/test/logs/您可能会注意到所有目录都将具有相同的时间戳,并且可能是最近的一个 - 我不记得它是如何计算的。只有文件才有时间戳。

因此,如果您需要可靠地删除目录,最好使用 dbutils.fs.rm('/mnt/test/logs/', True) (在 Python 中,或在 Scala 中类似)递归删除目录(请参阅 docs )。但也有限制,比如不支持通配符等,所以需要生成要删除的目录列表,然后进行删除。

关于azure - 无法通过 Databricks 笔记本从 Azure 存储容器中删除目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66338541/

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