[英]Not able to delete directory from Azure Storage container by Databricks notebook
我正在嘗試從安裝到我的 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 )。 但是有一些限制,比如不支持通配符等,所以需要生成要刪除的目錄列表,然后進行刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.