如何在Jupyter Notebook中用PySpark访问ADLS的Delta表并设置正确路径
在Jupyter Notebook中用PySpark访问ADLS Delta表的正确路径指定方法
一、ADLS Delta表的路径格式
ADLS分为Gen1和Gen2两个版本,路径格式完全不同,不能使用本地文件路径(比如/tmp/delta/people10m),必须使用对应版本的ADLS专属路径:
- ADLS Gen1:
adl://<ADLS-Gen1账户名>.azuredatalakestore.net/<Delta表文件夹路径> - ADLS Gen2:
abfss://<文件系统名>@<ADLS-Gen2账户名>.dfs.core.windows.net/<Delta表文件夹路径>
二、先配置PySpark的ADLS访问权限
仅指定正确路径还无法访问,需要先配置认证信息,确保PySpark拥有ADLS的访问权限。以下是常用的服务主体(Service Principal)认证配置示例:
ADLS Gen2配置
# 替换为你的ADLS Gen2账户信息、服务主体信息 spark.conf.set("fs.azure.account.auth.type.your-adls-account.dfs.core.windows.net", "OAuth") spark.conf.set("fs.azure.account.oauth.provider.type.your-adls-account.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider") spark.conf.set("fs.azure.account.oauth2.client.id.your-adls-account.dfs.core.windows.net", "你的服务主体Client ID") spark.conf.set("fs.azure.account.oauth2.client.secret.your-adls-account.dfs.core.windows.net", "你的服务主体Client Secret") spark.conf.set("fs.azure.account.oauth2.client.endpoint.your-adls-account.dfs.core.windows.net", "https://login.microsoftonline.com/你的租户ID/oauth2/token")
ADLS Gen1配置
# 替换为你的服务主体信息 spark.conf.set("dfs.adls.oauth2.access.token.provider.type", "ClientCredential") spark.conf.set("dfs.adls.oauth2.client.id", "你的服务主体Client ID") spark.conf.set("dfs.adls.oauth2.credential", "你的服务主体Client Secret") spark.conf.set("dfs.adls.oauth2.refresh.url", "https://login.microsoftonline.com/你的租户ID/oauth2/token")
三、读取Delta表的示例代码
ADLS Gen2示例
假设你的ADLS Gen2账户名为mydatalake,文件系统是myfilesystem,Delta表存储在delta-tables/people10m文件夹下:
delta_path = "abfss://myfilesystem@mydatalake.dfs.core.windows.net/delta-tables/people10m" df = spark.read.format("delta").load(delta_path) df.show()
ADLS Gen1示例
假设你的ADLS Gen1账户名为mydatalakegen1,Delta表存储在delta-tables/people10m文件夹下:
delta_path = "adl://mydatalakegen1.azuredatalakestore.net/delta-tables/people10m" df = spark.read.format("delta").load(delta_path) df.show()
四、常见问题排查
- 核对路径中的账户名、文件系统名、文件夹路径是否完全正确,避免拼写错误
- 确认服务主体已被赋予ADLS的对应权限(比如Gen2的「Storage Blob Data Contributor」,Gen1的「Data Lake Storage Contributor」)
- 检查Spark配置中的租户ID、Client ID、Client Secret是否准确
- 若使用Azure Synapse或Databricks自带的Notebook,部分环境会自动配置ADLS访问,可直接使用相对路径;普通Jupyter环境必须手动完成认证配置
内容的提问来源于stack exchange,提问作者Pankaj Rathod
相关产品推荐
相关产品推荐

