【发布时间】:2021-03-28 09:17:46
【问题描述】:
我正在尝试使用 Apache Spark SQL 连接器将数据从 Hadoop 导出到 MS SQL,按照此处的说明 sql-spark-connector 失败并出现异常 java.lang.NoSuchMethodError: com.microsoft.sqlserver.jdbc.SQLServerBulkCopy.writeToServer ( Lcom/microsoft/sqlserver/jdbc/ISQLServerBulkRecord;)V
根据官方文档Supported Versions
我的开发环境:
Hadoop 版本:2.7.0
Spark 版本:2.4.5
Scala 版本:2.11.12
MS SQL 版本:2016
我的代码:
package com.company.test
import org.apache.spark.sql.SparkSession
object TestETL {
def main(args:Array[String]):Unit = {
val spark:SparkSession = SparkSession
.builder()
.getOrCreate()
import spark.implicits._
// create DataFrame
val export_df = Seq(1,2,3).toDF("id")
export_df.show(5)
// Connection String
val server_name = "jdbc:sqlserver://ip_address:port"
val database_name = "database"
val url = server_name + ";" + "databaseName=" + database_name + ";"
export_df.write
.format("com.microsoft.sqlserver.jdbc.spark")
.mode("append")
.option("url", url)
.option("dbtable", "export_test")
.option("user", "username")
.option("password", "password")
.save()
}
}
我的 SBT
build.sbt
我执行的命令行参数
/mapr/abc.company.com/user/dir/spark-2.4.5/bin/spark-submit --class com.company.test.TestETL /mapr/abc.company.com/user/dir/project/TestSparkSqlConnector .jar
我反编译了 mssql-jdbc-8.2.0.jre8.jar 以检查它是否缺少 SQLServerBulkCopy.writeToServer 方法实现,但事实并非如此。
关于如何解决此问题的任何见解?
【问题讨论】:
标签: sql-server apache-spark hadoop