我正在讀從我的磚工作區DF三角洲表,然後我想寫這DF SQL Azure突觸專用池,但我得到錯誤:-
Py4JJavaError:調用o1509.save時發生一個錯誤。:com.databricks.spark.sqldw。SqlDWSideException: Azure突觸分析未能執行JDBC查詢產生的連接器。底層SQLException異常(s): - com.microsoft.sqlserver.jdbc。SQLServerException:輸入字符串不是一個有效的base - 64,因為它包含一個非基礎64字符,超過兩個填充字符,或非法字符填充字符。[ErrorCode = 110813] [SQLState = S0001]
下麵是我的代碼:-
從pyspark。sql從pyspark.sql進口*。從pyspark.sql進口*類型。功能導入* dwDatabase = " sqldbpool " dwServer = " synapseworkspace.database.windows.net " dwUser = "用戶" dwPass =“通過”dwJdbcPort = " 1433 " dwJdbcExtraOptions =“加密= true; trustServerCertificate = true; hostNameInCertificate = * .database.windows.net; loginTimeout = 30;“sqlDwUrl = " jdbc::狀態"置疑" / / " + dwServer +”:“+ dwJdbcPort +”;數據庫= " + dwDatabase +”;用戶= " + dwUser +”;密碼= " + dwPass +”; dwJdbcExtraOptions美元“sqlDwUrlSmall = " jdbc::狀態"置疑" / / " + dwServer +”:“+ dwJdbcPort +”;數據庫= " + dwDatabase +”;用戶= " + dwUser +”;密碼= " + dwPass spark.conf。(“spark.sql.parquet設置。writeLegacyFormat”、“true”) df = StarSchemaDict [' Product_Dim '] #字典是df的價值。(df .write .format .option (“com.databricks.spark.sqldw”) (“url”, sqlDwUrlSmall) .option(“數據表”,“Product_Dim”) .option .option (“forward_spark_azure_storage_credentials”、“True”) (“tempdir adls) .mode(“覆蓋”).save ())
數據被複製到我adls暫存區域但後拋出錯誤。
問題得到了,因為我是通過SAS令牌設置配置存儲賬戶而不是存儲訪問密鑰。現在的工作沒有任何問題。
spark.conf.set (" fs.azure.account.key.datalakestorage.dfs.core.windows.net " dbutils.secrets.get(範圍=“databricks-scope”鍵=“StorageAccessKey”))
我不知道為什麼錯誤顯示“輸入字符串不是一個有效的base - 64,因為它包含一個非基礎64字符”,但問題是相關的存儲訪問鍵。