簡體   English   中英

我無法從 databricks 中的 spark 數據幀創建加載數據到 Azure Synapse (DWH)

[英]I can't create-load data from spark dataframe in databricks to Azure Synapse (DWH)

我是這個領域的新手,目前正在使用 Azure 和 Databricks。 我將 Json 文件從 blob 攝取到數據塊,進行了一些轉換,現在希望將其加載到 Azure 中的原始 DWH(突觸)。

代碼執行在以下位置顯示錯誤:.mode("overwrite") 並給出以下錯誤:com.databricks.spark.sqldw.SqlDWSideException:Azure Synapse Analytics 無法執行連接器生成的 JDBC 查詢。

該單元格包含以下代碼:

dwTable= "mytable001"
dwDatabase = "*****"
dwServer = "****.database.windows.net" 
dwUser = "****"
dwPass = "****"
dwJdbcPort =  "1433"
dwJdbcExtraOptions = "encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;"
sqlDwUrl = "jdbc:sqlserver://" + dwServer + ".database.windows.net:" + dwJdbcPort + ";database=" + dwDatabase + ";user=" + dwUser+";password=" + dwPass + ";$dwJdbcExtraOptions"
sqlDwUrlSmall = "jdbc:sqlserver://" + dwServer + ".database.windows.net:" + dwJdbcPort + ";database=" + dwDatabase + ";user=" + dwUser+";password=" + dwPass


tempDir = "wasbs://****@*****.blob.core.windows.net/tempDirs"

acntInfo = "fs.azure.account.key.databrickstrainingst.blob.core.windows.net"
sc._jsc.hadoopConfiguration().set(
  acntInfo, 
  "key****")

spark.conf.set("spark.sql.parquet.writeLegacyFormat","true")

renamedColumnsDF.write \
  .format("com.databricks.spark.sqldw") \
  .option("url", sqlDwUrlSmall) \
  .option("dbtable", dwTable) \
  .option( "forward_spark_azure_storage_credentials","true") \
  .option("tempdir", tempDir) \
  .mode("overwrite") \
  .save()

如果encrypt property is set to true並且trustServerCertificate property is set to false並且連接字符串中的服務器名稱與 TLS 證書中的服務器名稱不匹配,則會出現以下錯誤。 從 7.2 版開始,驅動程序支持 TLS 證書中服務器名稱最左側標簽中的通配符模式匹配。

("url", "jdbc:sqlserver://cheprasynapse.sql.azuresynapse.net:1433;database=chepra;user={Your_username};password={Your_Password};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.sql.azuresynapse.net;loginTimeout=30;")

在此處輸入圖片說明

encrypt property is set to true並且trustServerCertificate property is set to true, Microsoft JDBC Driver for SQL Server 將不會驗證 SQL Server TLS 證書。 這通常是在測試環境中允許連接所必需的,例如在 SQL Server 實例只有一個自簽名證書的情況下。

("url", "jdbc:sqlserver://cheprasynapse.sql.azuresynapse.net:1433;database=chepra;user={Your_username};password={Your_Password};encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.sql.azuresynapse.net;loginTimeout=30;")

在此處輸入圖片說明

有關更多詳細信息,請參閱使用加密連接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM