如何通过Databricks Notebook挂载Azure Fabric OneLake?
如何在Databricks中挂载Azure Fabric OneLake?
你之前通过账号密钥成功挂载ADLS Gen2,但尝试挂载OneLake时失败,系统仍试图指向ADLS Gen2,核心问题在于OneLake的认证机制、路径格式和ADLS Gen2存在差异,以下是具体解决思路:
核心问题分析
OneLake不支持ADLS Gen2常用的**账号密钥(Account Key)**认证方式,且路径格式需要明确指定具体的湖仓子目录(如/Files),否则Databricks会默认按ADLS Gen2的规则解析,导致挂载失败。
解决步骤
1. 使用Azure AD身份认证
OneLake仅支持Azure AD相关的认证方式,推荐使用**服务主体(Service Principal)**进行挂载,需要提前准备:
- 服务主体的Client ID
- 服务主体的Client Secret
- Azure租户ID
2. 修正OneLake的ABFSS路径格式
正确的OneLake路径必须包含具体的湖仓子目录,格式示例:
abfss://<工作区名称>@onelake.dfs.fabric.microsoft.com/<湖仓名称>.Lakehouse/Files
注:
/Files对应湖仓的文件存储目录,若要挂载表目录可替换为/Tables
3. 完整挂载代码示例
# 配置OneLake和服务主体参数 workspace_name = "my_workspace" lakehouse_name = "my_lakehouse" client_id = "<你的服务主体Client ID>" client_secret = "<你的服务主体Client Secret>" tenant_id = "<你的Azure租户ID>" # 构建正确的OneLake源路径 source_url = f"abfss://{workspace_name}@onelake.dfs.fabric.microsoft.com/{lakehouse_name}.Lakehouse/Files" mount_point = "/mnt/onelake_mount" # 检查挂载点是否已存在 mounted_exist = any(mount_point in item[0] for item in dbutils.fs.mounts()) if not mounted_exist: # 配置Azure AD认证参数 auth_configs = { "fs.azure.account.auth.type": "OAuth", "fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider", "fs.azure.account.oauth2.client.id": client_id, "fs.azure.account.oauth2.client.secret": client_secret, "fs.azure.account.oauth2.client.endpoint": f"https://login.microsoftonline.com/{tenant_id}/oauth2/token" } # 执行挂载 dbutils.fs.mount( source=source_url, mount_point=mount_point, extra_configs=auth_configs )
4. 验证挂载结果
挂载完成后,执行以下命令确认是否成功访问OneLake:
dbutils.fs.ls(mount_point)
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

