問題
訪問Azure數據湖存儲Gen1 (ADLS Gen1)失敗ADLException:獲取文件<文件名>的信息錯誤當網絡配置如下時:
- Azure Databricks工作空間部署在您自己的虛擬網絡中(使用VNet注入)。
- 流量允許通過Azure數據湖存儲憑據傳遞。
- 開啟ADLS Gen1存儲防火牆。
- Azure Active Directory (Azure AD)服務端點已為Azure Databricks工作空間的虛擬網絡啟用。
導致
Azure Databricks使用位於其自己的虛擬網絡中的控製平麵,該控製平麵負責從Azure AD獲取令牌。ADLS憑據傳遞使用控製平麵獲取Azure AD令牌,用ADLS Gen1對交互用戶進行身份驗證。
當您在自己的虛擬網絡中部署Databricks工作空間(使用VNet注入)時,Azure Databricks集群將在自己的虛擬網絡中創建。為了提高安全性,您可以通過將ADLS Gen1防火牆配置為隻允許來自您自己的虛擬網絡的請求來限製對ADLS Gen1帳戶的訪問,方法是實現Azure AD的服務端點。
但是,ADLS憑據傳遞在這種情況下會失敗。原因是,當ADLS Gen1檢查創建令牌的虛擬網絡時,它發現該網絡是Azure Databricks控製平麵,而不是發出原始直通調用的客戶提供的虛擬網絡。
解決方案
若要將ADLS憑據傳遞與服務端點、存儲防火牆和ADLS Gen1一起使用,請啟用允許訪問Azure服務在防火牆設置.
如果您對在防火牆中啟用此設置有安全顧慮,則可以升級到ADLS Gen2。ADLS Gen2與上麵描述的網絡配置一起工作。