ABFS客戶端如果客戶ID不正確或使用錯誤的路徑

嚐試訪問Azure Blob文件係統(ABFS)路徑時,使用Azure Data Lake Storage Gen2(ADLS)會導致懸掛命令。

寫的亞當·帕夫拉卡(Adam Pavlacka)

上次出版於:2022年6月1日

問題

您正在使用Azure Data Lake Storage(ADLS)GEN2。當您嚐試從Databricks群集訪問Azure Blob文件係統(ABFS)路徑時,該命令將懸掛。

啟用調試日誌,您可以在驅動程序日誌中看到以下堆棧跟蹤:

引起的是:java.io.ioexception:服務器返回的http響應代碼:400 for url:https://login.microsoftonline.com/b9b831a9b831a9-6c10-40bf-86f3-489ed83c81e81e8/oauth2/oauth2/cocor sun.net.net.net.net.net.protocor。http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1894) at sun.net.www.protocol.http.HttpURLConnection.access$200(HttpURLConnection.java:91) at sun.net.www.protocol.http.HttpURLConnection$9.run(HttpURLConnection.java:1484) at sun.net.www.protocol.http.HttpURLConnection$9.run(HttpURLConnection.java:1482) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessController.doPrivilegedWithCombiner(AccessController.java:782) at sun.net.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) at shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.oauth2.AzureADAuthenticator.getTokenSingleCall(AzureADAuthenticator.java:254) ... 31 more

原因

如果在群集中配置了ABF,則屬性值錯誤fs.azure.account.oauth2.client.id,或者如果您嚐試訪問表單的明確路徑abfss://mycontainer@mystorageaccount.dfs.core.windows.net/...在哪裏mystorageaccount不存在,那麼ABFS驅動程序最終以重試循環而變得無反應。該命令最終會失敗,但是由於它重新驗證了很多次,它似乎是一個懸掛命令。

如果您嚐試使用現有存儲帳戶訪問不正確的路徑,則會看到404個錯誤消息。在這種情況下,該係統不會懸掛。

解決方案

訪問ABFS數據時,您必須驗證所有憑據的準確性。您還必須驗證您嚐試訪問的ABFS路徑。如果其中的任何一個是不正確的,則會發生問題。