在spark链接oracle时报异常java.sql.SQLException: No suitable driver

这里只说的是SPARK SQL当中出现的问题

第一种场景

如果是在本地服务上运行时出现的这个异常那么原因有很多种:
1、驱动类写错、jdbcUrl格式错误等等。
其实本地运行异常大部分是链接数据库的url的问题
一个正确的实例
这个是链接数据库的方法(Oracle的mysql应该也是适用的)

def getJdbcData(spark: SparkSession,user:String,password:String,
url:String,tablename:String): DataFrame = {
      LOGGER.info("+++++++++++++++++++ url =====================: "+url)
      val connectionProperties = new Properties()
      connectionProperties.put("user", user)
      connectionProperties.put("password", password)
      connectionProperties.put("driver", "oracle.jdbc.driver.OracleDriver")
      val jdbcDF = spark.read
        .jdbc(url, tablename, connectionProperties)

      jdbcDF
    }

  def getJdbcDataA(spark: SparkSession,user:String,password:String,
url:String,tablename:String): DataFrame = {
      LOGGER.info("+++++++++++++++++++ url =====================: "+url)
      val connectionProperties = new Properties()
      connectionProperties.put("user", user)
      connectionProperties.put("password", password)
    val jdbcDF = spark.read
      .format("jdbc")
      .option("url", url)
      .option("dbtable", tablename)
      .option("user", user)
      .option("password",password)
      .option("driver", "oracle.jdbc.driver.OracleDriver")
      .load()

      jdbcDF
    }

  /**
   *  获取模型超市数据库的查询
   *
   * @param spark  SparkSession
   * @param tablename 表名称
   * @return DataFrame
   */
  def getCurrentJdbcData(spark: SparkSession,tablename:String): DataFrame = {
    getJdbcData(spark,user,passWord,url,tablename)
  }

URL的实例:jdbc:oracle:thin:@192.168.x.x:1521/orcl

第二种场景

在本地运行没问题,放到线上却出现这个问题

第一个解决方式

有可能是你将jdbc的jar包打到jar包中路径出了问题,使得Spark没有找到那个jar造成了那个错误那么可以这么处理
在线上的spark目录(/home/spark-2.1.1-bin-hadoop2.6/jars)中加入odbc的jar包
这种方式是把jar包变成了全量的,这种方式是不可取的

第二个解决方式(重点,我就是踩在这上面)

在spark链接oracle时报异常java.sql.SQLException: No suitable driver_第1张图片
缺少driver属性.png

检查配置当中是否是缺少了driver这个属性如上图,添加driver属性如下图


在spark链接oracle时报异常java.sql.SQLException: No suitable driver_第2张图片
driver已添加.png

问题就可以解决了,但是必须要包中你的jdbc相关的jar包是全的情况下

你可能感兴趣的:(在spark链接oracle时报异常java.sql.SQLException: No suitable driver)