【发布时间】: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")
标签: apache-spark-sql azure-databricks