如何使用 ARM 模板在 Azure Data Lake 容器内创建文件夹?

How to create a folder inside of an Azure Data Lake container using an ARM template?

我有一个名为 eventcoadltest 的 Azure ADLS 存储帐户,我有一个名为 eventconnector-transformed-data-fs 的容器。

我已经通过 ARM 模板部署了这个 ADLS,但我需要在 eventconnector-transformed-data-fs 中创建一个目录,如下所示(文件夹调试是通过 UI 创建的,但我需要使用 ARM 模板实现相同的效果):

我发现一些帖子表明这是不可能的,但可以通过一些解决方法绕过它:

  1. How to create empty folder in azure blob storage
  2. ARM template throws incorrect segments lengths for array of storage containers types
  3. Microsoft Azure: How to create sub directory in a blob container

我也尝试过修改我的 ARM 模板以获得类似的结果,但我没有成功。

{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
    "storageAccountDLName": {
        "type": "string"
    },
    "sku": {
        "type": "string"
    },
    "directoryOutput":{
        "type": "string"
    }
},
"resources": [
    {
        "type": "Microsoft.Storage/storageAccounts",
        "apiVersion": "2021-02-01",
        "sku": {
            "name": "[parameters('sku')]",
            "tier": "Standard"
        },
        "kind": "StorageV2",
        "name": "[parameters('storageAccountDLName')]",
        "location": "[resourceGroup().location]",
        "tags": {
            "Contact": "[parameters('contact')]"
        },
        "scale": null,
        "properties": {
            "isHnsEnabled": true,
            "networkAcls": {
                "bypass": "AzureServices",
                "virtualNetworkRules": [],
                "ipRules": [],
                "defaultAction": "Allow"
            }
        },
        "dependsOn": [],
        "resources": [
            {
                "type": "storageAccounts/blobServices/containers",
                "name": "[concat('default/', 'eventconnector-raw-data-fs/test')]",
                "apiVersion": "2021-02-01",
                "properties": {},
                "dependsOn": [
                    "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountDLName'))]"
                ]
            }
        ]
    }
]
}

修改了以下代码以尝试在容器内创建文件夹。

"type": "storageAccounts/blobServices/containers",
"name": "[concat('default/', 'eventconnector-raw-data-fs/test')]"

我尝试解决这个问题的原因是因为我无法在我们的生产环境中创建文件夹,所以这就是为什么我需要完全通过 ARM 进行部署。如何使用部署脚本创建此文件夹?是否有另一种方法可以达到我想要的结果?欢迎任何想法或建议:)

这没有任何意义,因为您无法在 Azure 存储中创建文件夹。他们没有文件夹。 blob 是单独的 objects\entities。您对相信文件夹的存在感到困惑,因为 UI 将它们呈现为文件夹,但是 Azure 存储 Blob 容器中没有文件夹。

TLDR:你怎么努力都做不到

经过一番研究,我发现可以使用以下命令通过 Databricks 创建文件夹:

dbutils.fs.mkdirs("dbfs:/mnt/folder_desktop/test/uploads")

我必须使用我的 Azure Datafactory 配置 Databricks 才能 运行 此命令。