我用DLT ADLS負載csv,下麵是我在筆記本的sql查詢:
創建或更新直播表test_account_raw SELECT * FROM cloud_files (“abfss: / / my_container@my_storageaccount.dfs.core.windows.net/test_csv/”、“csv”地圖(“標題”、“true”));
以下是我的配置在三角洲住表管道為了訪問ADLS:
“配置”:{“fs.azure.account.auth.type.my_storageaccount.dfs.core.windows.net”:“OAuth”、“fs.azure.account.oauth.provider.type.my_storageaccount.dfs.core.windows.net”:“org.apache.hadoop.fs.azurebfs.oauth2。ClientCredsTokenProvider”、“fs.azure.account.oauth2.client.id.my_storageaccount.dfs.core.windows.net”:“my_client_id”、“fs.azure.account.oauth2.client.secret.my_storageaccount.dfs.core.windows.net”:“my_secret”、“fs.azure.account.oauth2.client.endpoint.my_storageaccount.dfs.core.windows.net”:“https://login.microsoftonline.com/my_tenant_id/oauth2/token”}
管道有以下錯誤:
org.apache.spark.sql.streaming。StreamingQueryException (STREAM_FAILED):查詢(id = 4833 fc - 80 - d5 - 818323 - 9 - f46 7 d1afc9c5bf7 runId = 722 e9aac - 0 - fdd - 4206 - 9 - d49 - 683 bb151f0bf]終止與例外:容器文件中的事件”{“回填”:{“鬥”:“root@dbstoragelhdp7mflfxe2y”,“關鍵”:“5810201264315799 /數據/ Temp / xxxx。csv”、“大小”:1801年,“eventTime”: 1682522202000,“newerThan默認2美元”:假}}”不同於預期的來源:my_container@my_storageaccount”。在org.apache.spark.sql.execution.streaming.StreamExecution.org apache引發美元sql執行流StreamExecution $ $美元美元runStream (StreamExecution.scala: 395) org.apache.spark.sql.execution.streaming.StreamExecution立刻1美元。美元anonfun運行2美元(StreamExecution.scala: 257) ....
我怎樣才能解決這個問題呢?
謝謝,
@Richard郭:
錯誤消息表明cloud_files函數中指定的容器和容器中指定fs。azure配置設置是不同的。在cloud_files函數中,您使用的是my_container在您所使用的配置設置my_container@my_storageaccount.dfs.core.windows.net。
要修複這些問題,您需要確保使用的容器名稱完全匹配在這兩個地方。你可以試著修改cloud_files函數使用完整的容器路徑如下:
創建或更新直播表test_account_raw SELECT * FROM cloud_files (“abfss: / /my_storageaccount.dfs.core.windows.net/my_container/test_csv/”,“csv”地圖(“標題”、“true”));
然後,確保fs。azure配置設置使用相同的容器路徑:
“配置”:{“fs.azure.account.auth.type.my_storageaccount.dfs.core.windows.net”:“OAuth”、“fs.azure.account.oauth.provider.type.my_storageaccount.dfs.core.windows.net”:“org.apache.hadoop.fs.azurebfs.oauth2。ClientCredsTokenProvider”、“fs.azure.account.oauth2.client.id.my_storageaccount.dfs.core.windows.net”:“my_client_id”、“fs.azure.account.oauth2.client.secret.my_storageaccount.dfs.core.windows.net”:“my_secret”、“fs.azure.account.oauth2.client.endpoint.my_storageaccount.dfs.core.windows.net”:“https://login.microsoftonline.com/my_tenant_id/oauth2/token”,“fs.azure。createRemoteFileSystemDuringInitialization”:“真正的”、“fs.abfss.my_container@my_storageaccount.dfs.core.windows.net.tokenProviderType org.apache.hadoop.fs.azurebfs.oauth2“:”。ClientCredsTokenProvider”、“fs.abfss.my_container@my_storageaccount.dfs.core.windows.net.oauth.provider.type org.apache.hadoop.fs.azurebfs.oauth2“:”。ClientCredsTokenProvider”、“fs.abfss.my_container@my_storageaccount.dfs.core.windows.net.oauth2.client.id”:“my_client_id”、“fs.abfss.my_container@my_storageaccount.dfs.core.windows.net.oauth2.client.secret”:“my_secret”、“fs.abfss.my_container@my_storageaccount.dfs.core.windows.net.oauth2.client.endpoint”:“https://login.microsoftonline.com/my_tenant_id/oauth2/token”}
注意,在fs。azure配置設置,fs。是用來代替fs.azure.account abfss前綴。這是因為我們使用訪問ADLS沛富驅動程序。