我无法从数据块中的 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(Synapse)。
代码执行在 .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,
时,SQL 服务器的 Microsoft JDBC 驱动程序不会验证 SQL 服务器 TLS 证书。这通常是在测试环境中允许连接所必需的,例如 SQL 服务器实例只有一个自签名证书。
("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;")
我是这个领域的新手,目前正在使用 Azure 和 Databricks。我将 Json 文件从 blob 提取到数据块,进行了一些转换,现在希望将其加载到 Azure 中的原始 DWH(Synapse)。
代码执行在 .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,
时,SQL 服务器的 Microsoft JDBC 驱动程序不会验证 SQL 服务器 TLS 证书。这通常是在测试环境中允许连接所必需的,例如 SQL 服务器实例只有一个自签名证书。
("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;")