Azure Databricks Autoloader是否支持AD凭据直通访问ADLS Gen2?
问题根因
AD凭据直通可以正常支持普通Spark批式读写ADLS Gen2,但Autoloader的身份验证逻辑和普通批读写存在差异:
- 当你在Autoloader配置中填入
cloudFiles.subscriptionId、cloudFiles.connectionString、cloudFiles.tenantId、cloudFiles.resourceGroup这类服务主体/事件通知模式专属参数时,即使cloudFiles.useNotifications设为false,Autoloader也会优先尝试从这些参数中获取认证凭据,不会自动走凭据直通逻辑,参数缺失对应有效值时就会抛出Could not find ADLS Gen2 Token错误。 - 低版本Databricks运行时(低于10.4 LTS)的Autoloader没有默认适配凭据直通的身份传递,需要显式指定token提供类。
修复方案
- 移除Autoloader配置中所有和事件通知、服务主体认证相关的冗余参数,仅保留必要配置,同时显式声明使用凭据直通认证:
cloud_file = { "cloudFiles.format": "parquet", "cloudFiles.useNotifications": "false", "fs.azure.account.auth.type": "CustomAccessToken", "fs.azure.account.custom.token.provider.class": spark.conf.get("fs.azure.account.custom.token.provider.class") }
如果你的Databricks运行时版本在11.3 LTS及以上,不需要额外加后面两个token相关配置,只要删掉冗余的认证参数,Autoloader就会自动继承集群的凭据直通身份。
- 确认流任务配置的
checkpointLocation路径同样在开启了凭据直通权限的ADLS Gen2存储账户下,Autoloader需要对checkpoint目录有读写权限,路径跨存储账户、或者对应存储没开直通权限也会报认证错误。 - 如果是通过作业提交流任务,需要在作业集群配置中单独开启ADLS Gen2凭据直通,作业集群默认不会继承交互式集群的直通配置。
验证方式:修改配置后重新启动流任务,Autoloader会先列取
raw_landing路径下的文件做初始扫描,没有抛出认证错误即代表配置生效。
内容的提问来源于stack exchange,提问作者Levi Huddleston
相关产品推荐
相关产品推荐

