本文只是针对当前特定环境下,出现的问题找不到sqljdbc驱动的案例。具体出现原因,可能是spark版本问题,也可能是集群配置问题。

  • yarn-client方式下:

通过--jars参数指定驱动文件位置,提交后提示:“。。。No suitable driver found for jdbc:。。。”;

后来参考到文章:Spark insertIntoJDBC找不到Mysql驱动解决方法 中介绍到:是由于版本问题,导致的我们程序提交不上去的错误问题。

于是修改提交参数使用--driver-class-path方式指定驱动包文件的位置,使用client方式提交问题解决了。

提交脚本为:

#!/bin/sh
spark-submit --deploy-mode client --class MyMain --driver-class-path /app/tt/service/jars/sqljdbc4.jar --num-executors --executor-cores --driver-memory 4g --executor-memory 6g My.jar
  • yarn-cluster方式下:

提交脚本:

#!/bin/sh
spark-submit --master yarn-cluster --class MyMain --jars /app/tt/service/jars/sqljdbc4.jar --num-executors --executor-cores --driver-memory 4g --executor-memory 6g My.jar

通过阅读相关文件,了解到:在spark1.4版本之后,--jars指定驱动方式也支持driver驱动系统加载方式。但是,实际测试结果却不是这样子的,使用-driver-class-path和--jars这两种方式指定jdbc驱动包的位置都是不能正确提交到cluster上的。

需要注意的问题:如果提示未找到jdbc驱动包,请确认你的却驱动包地址是否正确、确认你的包是否是正确的驱动包(比如你是需要sqljdbc,这里就不要填写为ojdbc驱动包。)

我的访问sqlserver数据库表的代码书写内容:

val prop = new Properties()
prop.setProperty("user", "xx")
prop.setProperty("password", "xxxx")
val lnglat_offset_df = hiveContext.read.jdbc("jdbc:sqlserver://localhost\\db_instance_name:1433;DatabaseName=db_name", "[dbo].[tb_test]", prop)

在我们自己的集群上解决驱动包在cluster方式下提交时,提示:“。。。No suitable driver found for jdbc:。。。”的解决方案:在各个子节点上安装对应的jdbc驱动包。

经过找高手帮忙最终解决了该问题,在cluster方式提交不上去的原因结论:我们数据库连接方式写的有问题。

正确的代码应该是:

val lnglat_offset_df = hiveContext.read.format("jdbc")
.options(Map("url" -> "jdbc:sqlserver://localhost\\db_instance_name:1433;DatabaseName=db_name;user=xx;password=xxx",
"dbtable" -> "dbo.tb_test",
"driver" -> "com.microsoft.sqlserver.jdbc.SQLServerDriver"))
.load()

但是,疑问高手在解决问题时是否在各个节点上安装了jdbc驱动。是否安装,我不确定(集群我们管理不了)。希望看到该文章的读者清楚这个事情。

Spark on Yarn:java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://localhost\\db_instance_name:1433;databaseName=db_name的更多相关文章

  1. java.sql.SQLException: No suitable driver found for jdbc:hive://localhost:10000/default

    error: java.sql.SQLException: No suitable driver found for jdbc:hive://localhost:10000/default at ja ...

  2. java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/

    出现这个异常原因可能很多: 1.编码问题 2.没有加载类驱动:换一种数据库的连接方式,就忘了这个:Class.forName(driverclass); import java.io.IOExcept ...

  3. 在交互环境下使用 Pyspark 提交任务给 Spark 解决 : java.sql.SQLException: No suitable driver

    在 jupyter 上启用 local 交互环境和 spark 进行交互使用 imapla 来帮助 spark 取数据却失败了 from pyspark.sql import SparkSession ...

  4. Exception in thread “main” java.sql.SQLException: No suitable driver

    问题背景:通过Spark SQL的jdbc去读取Oracle数据做测试,在本地的idea中没有报任务错误.但是打包到集群的时候报: Exception in thread “main” java.sq ...

  5. java.sql.SQLException: No suitable driver 问题解决

    最近在学习java,用到c3p0数据库连接池,遇到一个很奇怪的现象,用main方法测试是可以正常连接数据库的,但是使用jsp调用代码,就会报如下图的错误! 最下面的java.sql.SQLExcept ...

  6. 出现java.sql.SQLException: No suitable driver的几种解决办法

    今天在用C3p0连接MySql数据库 这个时候出现了上面的错误, 一般来说这种错误有3个方向解决 一般都是db的配置的问题 ,一定要小心DB 的配置 八月 19, 2017 8:30:46 下午 co ...

  7. java.sql.SQLException:No suitable driver found for http://localhost:3306/school

    1.错误描述 java.sql.SQLException:No suitable driver found for http://localhost:3306/school 2.错误原因 Class. ...

  8. JSP页面无法使用EL导致"java.sql.SQLException: No suitable driver found for ${snapshot}"的问题

    使用JSTL来连接mysql,这个问题折腾了半天,老以为是Mysql驱动的问题,还好最后偶然发现了是EL表达式识别不了,报错: javax.servlet.ServletException: java ...

  9. java.sql.SQLException: No suitable driver

    java.sql.SQLException: No suitable driver at java.sql.DriverManager.getDriver(Unknown Source) at com ...

随机推荐

  1. 数字转IP地址函数

    --------------------------------------------------------------------- -- Author : htl258(Tony) -- Da ...

  2. Codeforces558E A Simple Task(线段树)

    题目 Source http://codeforces.com/problemset/problem/558/E Description This task is very simple. Given ...

  3. CodeForces 540

    A. Combination Lock time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  4. 【转】如何提高意志力&如何坚持每天学习

    第一篇如何提高意志力 有一种品质可以使一个人在碌碌无为的平庸之辈中脱颖而出,这个品质不是天资,不是教育,也不是智商,而是自律.有了自律,一切皆有可能,无,则连最简单的目标都显得遥不可及.–西奥多·罗斯 ...

  5. 使用 yum 安装 virtualbox 虚拟机

    我的环境是centos7,所以也可以说是在centos7下使用yum安装virtualbox,不过对于其他的LINUX发行版方法都一样. 下面的操作都是在命令行中进行的. 1.首先需要配置yum的源. ...

  6. onselectstart="return false"

    以前在做图片滚动时,在双击左右箭头,快速切换图片滚动时,会选择附近区域的文字,感觉不是很好,今天在查资料时,讲到了这个问题, 试了一下,不错,解决了问题. IE及Chrome下的方法一样,对相应的元素 ...

  7. PHP AJAX JSONP实现跨域请求使用实例

    在之前我写过“php返回json数据简单实例”,“php返回json数据中文显示的问题”和“在PHP语言中使用JSON和将json还原成数组”.有兴趣的童鞋可以看看 今天我写的是PHP AJAX JS ...

  8. SOLD原则

    借鉴: 1. 单一职责原则 单一职责原则 (Single Responsibility Principle,SRP) 指出,每个方法或类应当有且仅有 一个改变的理由.这意味着每个方法或类应当做一件事情 ...

  9. mysql, count函数容易曲解的地方

    统计count(*), 数量为9行; 统计count(abandonAddTime), 数量为8; 统计count(abandonUserName), 数量为9行; count(), 不能统计null ...

  10. PHP中获取星期的几种方法

    PHP中获取星期的几种方法   PHP星期几获取代码: 1 date(l); 2 //data就可以获取英文的星期比如Sunday 3 date(w); 4 //这个可以获取数字星期比如123,注意0 ...