【问题标题】:Export Data from Hadoop using sql-spark-connector (Apache)使用 sql-spark-connector (Apache) 从 Hadoop 导出数据
【发布时间】: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

JDBC Exception

我反编译了 mssql-jdbc-8.2.0.jre8.jar 以检查它是否缺少 SQLServerBulkCopy.writeToServer 方法实现,但事实并非如此。

关于如何解决此问题的任何见解?

【问题讨论】:

    标签: sql-server apache-spark hadoop


    【解决方案1】:

    这是一个兼容性错误,请参考此链接,它将解释错误或仅选择兼容版本。 gitHub link

    【讨论】:

    • 这里提到的兼容性问题是针对旧连接器github.com/Azure/azure-sqldb-spark(旧连接器)。我正在尝试使用 sql-spark-connector(新连接器)
    • 是的,你完全正确,但只是尝试使用相同的脚本更改版本。
    猜你喜欢
    • 2015-11-29
    • 2021-12-02
    • 1970-01-01
    • 2016-10-20
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    相关资源
    最近更新 更多