本文只是针对当前特定环境下,出现的问题找不到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. 爱特梅尔ATMEL全系列芯片解密单片机破解

    爱特梅尔ATMEL全系列芯片解密单片机破解 ATMEL芯片介绍: ATMEL公司为全球性的业界领先企业,致力于设计和制造各类微控制器.电容式触摸解决方案.先进逻辑.混合信号.非易失性存储器和射频 (R ...

  2. Android自动化测试-自动获取cpu和内存信息

    CpuInfo.java package com.dtest; import java.io.BufferedReader; import java.io.FileWriter; import jav ...

  3. easyui tree loadFilter的使用

      实例化.这里增加了三个属性,可以指定idFiled,textFiled和parentField.所以这里的simpleData可以不严格转换成tree的数据格式. $(function(){ $( ...

  4. tornado 学习笔记6 Application 源码分析

    Application 是Tornado重要的模块之一,主要是配置访问路由表及其他应用参数的设置. 源代码位于虚拟运行环境文件夹下(我的是env),具体位置为env > lib>sit-p ...

  5. db2 游标使用

    游标一般用来迭代结果集中的行 为了在一个过程中处理一个游标的结果,需要做以下事情: 在存储过程块的开头部分 DECLARE 游标. 打开该游标. 将游标的结果取出到之前已声明的本地变量中(隐式游标处理 ...

  6. 常用的Meta标签写法和作用

    页面关键词 <meta name="keywords" content="your tags" /> 页面描述 <meta name=&quo ...

  7. HttpClient_自定义cookie策略

    实际使用client的过程中,会遇到一种情况,如cookie的Key为空的,此时默认的cookie的策略处理cookie是会报错. 这时咱可以通过重写cookiestore策略来解决如: /** * ...

  8. BSBuDeJie_02

    一 左边的类别数据 1 模型 和 字典中的数据对应 /* id */ @property (nonatomic, assign) NSInteger *id; /* 总数 */ @property ( ...

  9. windows下读取磁盘扇区数据

    在Windows下,磁盘可以看做是一个文件,其文件名为\\\\.\\PhysicalDriveX,其中X表示磁盘的编号,例如\\\\.\\PhysicalDrive0表示的是第0号磁盘,如果需要读取一 ...

  10. C fopen

    格式:文件指针名=fopen(文件名,使用文件方式) 参数:文件名 意义"C://TC//qwe.txt" 文件C:/TC/qwe.txt"qwe.txt" 和 ...