如果使用了錯誤的客戶端ID或錯誤的路徑,ABFS客戶端將掛起

在使用Azure數據湖存儲Gen2 (ADLS)時,嚐試訪問Azure Blob文件係統(ABFS)路徑會導致掛起命令。

寫的亞當Pavlacka

最後發布時間:2022年6月1日

問題

您正在使用Azure數據湖存儲(ADLS) Gen2。當您試圖從Databricks集群訪問Azure Blob文件係統(ABFS)路徑時,該命令會掛起。

打開調試日誌,您可以在驅動日誌中看到以下堆棧跟蹤:

java.io.IOException:服務器返回HTTP響應碼:400 for URL:在sun.net.https://login.microsoftonline.com/b9b831a9-6c10-40bf-86f3-489ed83c81e8/oauth2/token .www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1894)在sun.net.www.protocol.http.HttpURLConnection.access$200(HttpURLConnection.java:91)在sun.net.www.protocol.http.HttpURLConnection$9.run(HttpURLConnection.java:1484)在sun.net.www.protocol.http.HttpURLConnection$9.run(HttpURLConnection.java:1482)在java.security.AccessController. com。www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1481) at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:347) atshaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.oauth2.AzureADAuthenticator.getTokenSingleCall (AzureADAuthenticator.java: 254)…31日更

導致

如果在集群上配置ABFS時,屬性值錯誤fs.azure.account.oauth2.client.id,或者嚐試訪問表單的顯式路徑abfss: / / myContainer@myStorageAccount.dfs.core.windows.net/..。在哪裏myStorageAccount不存在,那麼ABFS驅動程序將在重試循環中結束並變得無響應。該命令最終會失敗,但因為它重試了很多次,所以它看起來像是一個掛起的命令。

如果試圖使用現有的存儲帳戶訪問錯誤的路徑,則會看到一條404錯誤消息。在這種情況下,係統不會掛起。

解決方案

在訪問ABFS數據時,必須驗證所有憑證的準確性。您還必須驗證您試圖訪問的ABFS路徑是否存在。如果其中任何一個不正確,就會出現問題。