连接到 sql server 时出现 pyspark jdbc 错误
Posted
技术标签:
【中文标题】连接到 sql server 时出现 pyspark jdbc 错误【英文标题】:pyspark jdbc error when connecting to sql server 【发布时间】:2020-08-21 23:50:36 【问题描述】:我正在尝试使用以下代码将存储在 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表中?
【问题讨论】:
格式是jdbc,驱动类是你设置的。 这能回答你的问题吗? Working with jdbc jar in pyspark 嗨@Lamanus,我收到错误 org.apache.spark.sql.AnalysisException: Table or view not found: dbo.Employee 即使该表存在。 代码:df.write.format("jdbc").option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver").option("url", "jdbc:sqlserver://dburl:1433;database=db;user=usr;password=pwd").insertInto("dbo.Employee")
【参考方案1】:
当没有创建您所引用的关联表或视图时,您将收到此错误消息: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 数据库的数据帧。
【讨论】:
以上是关于连接到 sql server 时出现 pyspark jdbc 错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 Hibernate 连接到 SQL Server 2008 命名实例时出现问题
连接到 sql server 时出现 pyspark jdbc 错误
使用 AutoIT 连接到远程 SQL Server 时出现问题
将 VWD Express 2008 连接到 SQL Server Express 2005 时出现问题