簡體   English   中英

無法從 Databricks 筆記本的 Azure 存儲容器中刪除目錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM