问题描述
我正在尝试使用以下代码将存储在Azure Data Lake Gen2上的json文档导入到SQL Server数据库,但是遇到以下错误。但是,当我从SQL Server读取数据时,jdbc连接有效。
错误消息: The driver could not open a JDBC connection.
代码:
df = spark.read.format('json').load("wasbs://<file_system>@<storage-account-name>.blob.core.windows.net/empDir/data";)
val blobStorage = "<blob-storage-account-name>.blob.core.windows.net"
val blobContainer = "<blob-container-name>"
val blobAccessKey = "<access-key>"
val empDir = "wasbs://" + blobContainer + "@" + blobStorage +"/empDir"
val acntInfo = "fs.azure.account.key."+ blobStorage
sc.hadoopConfiguration.set(acntInfo,blobAccessKey)
val dwDatabase = "<database-name>"
val dwServer = "<database-server-name>"
val dwUser = "<user-name>"
val dwPass = "<password>"
val dwJdbcPort = "1433"
val sqlDwUrl = "jdbc:sqlserver://" + dwServer + ":" + dwJdbcPort + ";database=" + dwDatabase + ";user=" + dwUser+";password=" + dwPass
spark.conf.set("spark.sql.parquet.writeLegacyFormat","true")
df.write.format("com.microsoft.sqlserver.jdbc.SQLServerDriver").option("url",sqlDwUrl).option("dbtable","Employee").option( "forward_spark_azure_storage_credentials","True").option("tempdir",empDir).mode("overwrite").save()
还要如何将empDir目录中的所有json文档插入employee表中?
解决方法
当没有要创建的关联表或视图创建时,您将收到以下错误消息:org.apache.spark.sql.AnalysisException: Table or view not found: dbo.Employee
。确保代码指向正确的数据库[Azure Databricks数据库(内部)或Azure SQL数据库(外部)]
您可以在Microsoft Q&A - Azure Databricks论坛上签出查询。
将数据写入Azure Databricks数据库:
要成功地将数据插入默认数据库,请确保创建表或视图。
检出写入默认数据库的数据框。
将数据写入Azure SQL数据库:
这是一个有关如何将数据从数据帧写入Azure SQL数据库的示例。
检出写入Azure SQL数据库的数据框。