如何在Azure CLI部署Databricks工作区时启用Unity Catalog并部署外部存储账户?
解决方案
要实现你的需求,需要分三步修改原有脚本:创建带Unity Catalog的Databricks工作区、部署符合要求的外部存储账户、配置Unity Catalog元存储与存储账户的关联。以下是完整的PowerShell脚本和步骤说明:
完整脚本
function Create-DatabricksWithUC { param ( [string] $rgName, [string] $dbName, [string] $storageAccountName, [string] $containerName = "uc-root-storage" ) # 1. 创建启用Unity Catalog的Databricks工作区 Write-Host "正在创建Databricks工作区并启用Unity Catalog..." az databricks workspace create ` --resource-group $rgName ` --name $dbName ` --location westeurope ` --enable-unity-catalog ` --output none # 2. 创建支持ADLS Gen2的外部存储账户(Unity Catalog要求层级命名空间) Write-Host "正在创建外部存储账户..." az storage account create ` --name $storageAccountName ` --resource-group $rgName ` --location westeurope ` --sku Standard_RAGRS ` --enable-hierarchical-namespace true ` --output none # 3. 创建存储容器作为Unity Catalog元存储的根存储 Write-Host "正在创建存储容器..." az storage container create ` --name $containerName ` --account-name $storageAccountName ` --output none # 4. 获取Databricks工作区的元存储ID(启用UC后自动创建元存储) $metastoreId = az databricks metastore list ` --resource-group $rgName ` --query "[0].metastoreId" ` --output tsv # 5. 关联存储容器到Unity Catalog元存储 Write-Host "正在关联存储到Unity Catalog元存储..." az databricks metastore update ` --resource-group $rgName ` --metastore-id $metastoreId ` --storage-root "abfss://$containerName@$storageAccountName.dfs.core.windows.net/" ` --output none Write-Host "Databricks工作区(含Unity Catalog)及外部存储部署完成!" } # 使用示例 # Create-DatabricksWithUC -rgName "your-rg" -dbName "your-db-workspace" -storageAccountName "youruniquestorageacc"
关键说明
- 启用Unity Catalog:在
az databricks workspace create命令中添加--enable-unity-catalog参数,创建工作区时直接启用UC,无需后续手动开启。 - 存储账户要求:必须开启
--enable-hierarchical-namespace true,因为Unity Catalog依赖ADLS Gen2的层级命名空间来管理数据资产。 - 元存储关联:启用UC后会自动生成一个元存储,需要将存储容器设置为元存储的根存储,这样UC才能将元数据(如数据库、表)与实际存储的数据绑定。
- 权限注意:确保执行Azure CLI的账号拥有以下权限:资源组的 Contributor 权限、Databricks工作区的 Contributor 权限、存储账户的 Contributor 权限。
内容的提问来源于stack exchange,提问作者Greencolor
相关产品推荐
相关产品推荐

