Sql server SparkSQL MS SQL Server,获取消息;“没有合适的司机”;编译后

Sql server SparkSQL MS SQL Server,获取消息;“没有合适的司机”;编译后,sql-server,scala,apache-spark,apache-spark-sql,Sql Server,Scala,Apache Spark,Apache Spark Sql,构建.sbt name := "BigData" version := "0.1" scalaVersion := "2.12.7" libraryDependencies += "com.github.tototoshi" %% "scala-csv" % "1.3.5" // https://mvnrepository.com/artifact/org.apache.spark/spark-core libraryDependencies += "org.apache.spark" %

构建.sbt

name := "BigData"

version := "0.1"

scalaVersion := "2.12.7"

libraryDependencies += "com.github.tototoshi" %% "scala-csv" % "1.3.5"
// https://mvnrepository.com/artifact/org.apache.spark/spark-core
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.4.0"

// https://mvnrepository.com/artifact/org.apache.spark/spark-sql
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.4.0"
// https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc
libraryDependencies += "com.microsoft.sqlserver" % "mssql-jdbc" % "6.1.0.jre8" % Test
SparkMSSQL.scala

import org.apache.spark.sql.SparkSession

object SparkMSSQL {

  def main(args: Array[String]): Unit = {

    val spark = SparkSession.
      builder.master("local[*]")
      .appName("Simple Application")
      .getOrCreate()
    val url = "jdbc:sqlserver://localhost;databaseName=scalatest;integratedSecurity=true";
    // Define database table to load into DataFrame
    val jdbcDbTable = "dbo.user_profiles"
    val df = spark
      .read
      .format("jdbc")
      .option("url", url)
      .option("dbtable", "dbo.user_profiles")
      .load()

    df.printSchema()
  }
}
编译后出错

Exception in thread "main" java.sql.SQLException: No suitable driver
    at java.sql.DriverManager.getDriver(DriverManager.java:315)
    at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.$anonfun$driverClass$2(JDBCOptions.scala:105)
    at scala.Option.getOrElse(Option.scala:121)
    at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.<init>(JDBCOptions.scala:105)
    at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.<init>(JDBCOptions.scala:35)
    at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:32)
    at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:318)
    at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:223)
    at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:211)
    at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:167)
线程“main”java.sql.SQLException中的异常:没有合适的驱动程序 位于java.sql.DriverManager.getDriver(DriverManager.java:315) 位于org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.$anonfun$driverClass$2(JDBCOptions.scala:105) 位于scala.Option.getOrElse(Option.scala:121) 位于org.apache.spark.sql.execution.datasources.jdbc.jdboptions.(jdboptions.scala:105) 位于org.apache.spark.sql.execution.datasources.jdbc.jdbcopies。(jdbcopies.scala:35) 位于org.apache.spark.sql.execution.datasources.jdbc.jdbrelationprovider.createRelation(jdbrelationprovider.scala:32) 位于org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:318) 位于org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:223) 位于org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:211) 位于org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:167)
请注意,我的代码有什么问题?

首先,您的jdbc驱动程序位于
测试范围内,因此jar可能没有在运行时加载。但是,spark还需要驱动程序类信息来创建JDBC连接,因此请尝试向DF初始值设定项添加以下选项:

.option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver")

首先,您的jdbc驱动程序位于
测试范围内,因此jar可能不会在运行时加载。但是,spark还需要驱动程序类信息来创建JDBC连接,因此请尝试向DF初始值设定项添加以下选项:

.option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver")