Spark on Yarn:java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://localhost\\db_instance_name:1433;databaseName=db_name
本文只是针对当前特定环境下,出现的问题找不到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的更多相关文章
- 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 ...
- java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/
出现这个异常原因可能很多: 1.编码问题 2.没有加载类驱动:换一种数据库的连接方式,就忘了这个:Class.forName(driverclass); import java.io.IOExcept ...
- 在交互环境下使用 Pyspark 提交任务给 Spark 解决 : java.sql.SQLException: No suitable driver
在 jupyter 上启用 local 交互环境和 spark 进行交互使用 imapla 来帮助 spark 取数据却失败了 from pyspark.sql import SparkSession ...
- Exception in thread “main” java.sql.SQLException: No suitable driver
问题背景:通过Spark SQL的jdbc去读取Oracle数据做测试,在本地的idea中没有报任务错误.但是打包到集群的时候报: Exception in thread “main” java.sq ...
- java.sql.SQLException: No suitable driver 问题解决
最近在学习java,用到c3p0数据库连接池,遇到一个很奇怪的现象,用main方法测试是可以正常连接数据库的,但是使用jsp调用代码,就会报如下图的错误! 最下面的java.sql.SQLExcept ...
- 出现java.sql.SQLException: No suitable driver的几种解决办法
今天在用C3p0连接MySql数据库 这个时候出现了上面的错误, 一般来说这种错误有3个方向解决 一般都是db的配置的问题 ,一定要小心DB 的配置 八月 19, 2017 8:30:46 下午 co ...
- 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. ...
- JSP页面无法使用EL导致"java.sql.SQLException: No suitable driver found for ${snapshot}"的问题
使用JSTL来连接mysql,这个问题折腾了半天,老以为是Mysql驱动的问题,还好最后偶然发现了是EL表达式识别不了,报错: javax.servlet.ServletException: java ...
- java.sql.SQLException: No suitable driver
java.sql.SQLException: No suitable driver at java.sql.DriverManager.getDriver(Unknown Source) at com ...
随机推荐
- TDatabase TQuery TDataSource TDBGrid 设定方法
TDatabase TQuery TDataSource TDBGrid object Database1: TDatabase AliasName = 'sfis' DatabaseName = ' ...
- MYSQL trigger 个人记录
同学要写个trigger,稍微帮他研究了下 以下主要是个人猜想理解的 主要讲update 我们在创建trigger时,数据库会对创建了trigger的表进行事件监听. 当表中的一条记录发生update ...
- Leetcode Valid Palindrome
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...
- Dijkstra算法初步 - 迷宫问题
你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数.还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间.游戏规定了 ...
- BFC给我的帮助以及对hasLayout的认识
布局的时候经常想让一个或几个元素并并排的放在一起,有时给其中的一个浮动,元素是在一行了,可还是都左边重叠了,总是这样那样改来改去,小白的我也是醉了! 今天偶然间看到了了BFC这个东东,虽然现在还是不是 ...
- debian C++ OTL库 用 unixodbc 连接 mysql 小记
这个东东也是折腾了几天,网上很多文章可能已经过时,所以写下不同,以备后用. 参考网址: http://blog.csdn.net/genganpeng/article/details/7402229 ...
- trie字典树详解及应用
原文链接 http://www.cnblogs.com/freewater/archive/2012/09/11/2680480.html Trie树详解及其应用 一.知识简介 ...
- JS字符串与汉字的字节获取
JS英文为一个字节,中文GBK为3个字节,UTF-8为2个字节. 1.通过for循环 function getStrLeng(str){ var realLength = 0; var len = s ...
- Vuforia图像追踪,动态创建的对象隐藏显示的坑
刚做的一个项目,使用Unity3D的Vuforia插件进行图像识别,其中有动态生成的游戏对象模型,地形模型放在ImageTarget下,作为ImageTarget的子物体. 动态生成的敌人则有Pref ...
- 八月25日认识java
java的起源:1991年SUN公司启动的“Green”项目制作出的Star7, java的发展:于1995年5月23日正NSU式发布第一个java开发工具:java在1998年推出JDK1.2,表示 ...