【问题标题】:how to delete subfolder in ADLS gen2 via azure databricks如何通过 azure databricks 删除 ADLS gen2 中的子文件夹
【发布时间】:2022-01-18 13:57:09
【问题描述】:

我需要使用 databricks dbutils 删除具有特定名称的 ADLS Gen2 子文件夹,但无法执行通配符递归。

e.g. 
adlsstorageaccount/container1/folder2/folder3/folderA/**abc**/.parquet
adlsstorageaccount/container1/folder2/folder3/folderB/**abc**/.parquet
adlsstorageaccount/container1/folder2/folder3/folderC/**abc**/.parquet

只需要删除子文件夹名称“abc”及其内容,整个路径是动态的。

【问题讨论】:

    标签: powershell databricks azure-databricks azure-data-lake-gen2


    【解决方案1】:

    我们在我们的环境中复制了相同的文件夹,下面是有效的命令。

    $FileSystemName="<Your Container Name>"
    $dirname="folder2/folder3/folderA/abc/"
    $ctx=New-AzStorageContext -StorageAccountName '<Your Storage Account>' -StorageAccountKey '<Your Access Key>'
    Remove-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname
    

    然后用 Y - 'yes' 确认

    以下是截图供您参考

    使用命令执行前

    命令执行后

    参考: https://docs.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-directory-file-acl-powershell#delete-a-directory

    【讨论】:

    • 谢谢,如何为 $dirname 运行循环?鉴于我需要遍历容器内的所有子文件夹并删除名为“abc”的文件夹?
    • AFAIK 我们需要遍历整个路径并删除文件或文件夹。
    • 是的,实际上要求是我需要遍历 ADLS Gen2 容器中的所有文件夹并只删除一个名为“abc”的目录,寻找一种方法来实现这一点,这样我就可以避免手动更新路径每次。
    【解决方案2】:

    您只需在 databricks 中使用魔术命令 %sh 并使用标准 linux 命令使用通配符将其删除,例如:

    %sh
    rm /dbfs/mnt/adlsstorageaccount/container1/folder2/folder3/folderA/*abc*/*.parquet
    

    【讨论】:

    • 谢谢,如果您注意到文件夹 A、B 和 C 发生变化,意味着我必须遍历容器内的所有文件夹并删除名为“abc”的文件夹 ...
    猜你喜欢
    • 2020-09-15
    • 2022-01-13
    • 1970-01-01
    • 2021-11-25
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 2021-08-03
    相关资源
    最近更新 更多