本文只是针对当前特定环境下,出现的问题找不到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. Delphi中滚动文字的应用

    1.添加一个Timer控件,Interval属性设置为20. 2.添加一个Label控件,Name为labMessage. 3.在Timer的OnTimer事件添加如下代码: procedure TF ...

  2. 传智播客DotNet面试题

    技术类面试.笔试题汇总(整理者:杨中科,部分内容从互联网中整理而来) 注:标明*的问题属于选择性掌握的内容,能掌握更好,没掌握也没关系. 下面的参考解答只是帮助大家理解,不用背,面试题.笔试题千变万化 ...

  3. Android之UI编程(二):表格布局

    表格布局(TableLayout)继承了LinearLayout,它的本质依然是线性布局管理器,表TableLayout采用行.列的形式来管理UI组件,它并不需要明确地声明暴行多少行.多少列,而是通过 ...

  4. 2016中国大学生程序设计竞赛 网络选拔赛 I This world need more Zhu

    This world need more Zhu Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  5. [代码]label增加删除线

    UILabel *lable = [[UILabel alloc] initWithFrame:CGRectMake(20, 60, 100, 30)];    [self.view addSubvi ...

  6. React native 的弹出层(输入)效果

    /*弹出层测试*/ import React,{Component} from 'react'; import { StyleSheet, View, Image, Text, TouchableOp ...

  7. Jquery父页面和子页面的相互操作

    //父页面调用子页面Add函数 $("iframe")[0].contentWindow.Add() //父页面对子页面Id为Sava的Dom元素执行一次单击操作 $(" ...

  8. JS中的函数声明错误

      这个问题是JS的函数声明形参部分不带var. ( 额,基础不扎实.)

  9. JSP 简介

      160901   1. 一句话介绍什么是JSP? 和java相关的技术,可以开发出动态的,高性能的Web应用程序,的一门开发语言   2. 优点即特点,那么jsp的优点有哪些呢? JSP实现的We ...

  10. rownum和rowid伪列

    select row employee_id,last name,salary from employees; select row employee_id,last name,salary from ...