`
zhao_rock
  • 浏览: 191152 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

SparkSQL Driver ClassNotFoundException的解决方案

阅读更多

在使用SparkSQL连接关系型数据库时,需要通过JDBC来加载对应数据库的驱动,如SQLServer JDBC连接用到的sqljdbc4.jar,处理时经常会遇到sparksql抛出jdbc的驱动程序ClassNotFoundException,类似下面的错误提示
       Exception in thread "main" java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
       at java.net.URLClassLoader$1.run(Unknown Source)
       at java.net.URLClassLoader$1.run(Unknown Source)
       at java.security.AccessController.doPrivileged(Native Method)
       at java.net.URLClassLoader.findClass(Unknown Source)
       at java.lang.ClassLoader.loadClass(Unknown Source)
       at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
       at java.lang.ClassLoader.loadClass(Unknown Source)
       at org.apache.spark.sql.jdbc.package$DriverRegistry$.register(jdbc.scala:227)
       at org.apache.spark.sql.jdbc.DefaultSource.createRelation(JDBCRelation.scala:94)
       at org.apache.spark.sql.sources.ResolvedDataSource$.apply(ddl.scala:265)
       at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:114)
       at org.apache.spark.sql.SQLContext.load(SQLContext.scala:1242)
       at com.test.SparkSQLSample$.test(SparkSQLSample.scala:21)
       at com.test.SparkSQLSample$.main(SparkSQLSample.scala:32)
       at com.test.SparkSQLSample.main(SparkSQLSample.scala)
 
 分享一下自己的处理方式
 1.最简单的Spark程序以local方式在本地启动,只需要将sqljdbc4.jar关联到项目中即可
 
 2.Spark程序运行在mesos或yarn等分布式任务调度系统上
 
 2.1 这种情况下,可以考虑将驱动包如sqljdbc4.jar,利用maven或sbt打包到spark-submit提交的jar包中,
     不过这种方式并不推荐,原因有两点:首先每次新增的依赖包都需要重新打包,其次我在将sqljdbc4打包到Spark-submit的jar,执行Spark作业时发现,底层抛出异常,大致意思sqljdbc4.jar需要用jdk_1.6的版本编译,而我用的1.7,然而其它的依赖包中编译却需要1.7,总的来说,这种方式可能出力后还可能达不到效果


    2.2 推荐使用下面的方式,简单便捷,只需要我们在Spark节点添加SPARK_CLASSPATH,并把需要的包引用到SPARK_CLASSPATH即可。
以CentOS为例,在/etc/profile中添加export SPARK_CLASSPATH="/usr/local/lib/*",source /etc/profile 后即生效,这样我们只需要把依赖的驱动包添加到/usr/local/lib/下就可以了

0
0
分享到:
评论

相关推荐

    使用IDEA启动项目遇见ClassNotFoundException的解决方案

    使用IDEA启动项目遇见ClassNotFoundException的解决方案 在使用IDEA启动项目时,可能会遇见ClassNotFoundException的错误,导致项目无法启动。本文将详细介绍使用IDEA启动项目遇见ClassNotFoundException的正确解决...

    ClassNotFoundException终极解决办法

    本文将深入探讨 `ClassNotFoundException` 的原因、如何诊断问题以及多种解决方案,帮助开发者更好地理解和处理此类异常。 **原因分析:** `ClassNotFoundException` 的出现主要有以下几种情况: 1. **类路径配置...

    数据库驱动常见错误"java.lang.ClassNotFoundException:解决了jsp连接Error establishing socket.

    "java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver" 解决方案 [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket. 解决了jsp连接 sql server 2000的问题

    java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource解决方案

    总之,要解决`java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource`的问题,你需要确保你的项目正确包含了Apache Commons DBCP及其相关依赖,并正确配置了`BasicDataSource`。同时,了解...

    java常见异常的解决方案

    ### Java常见异常及其解决方案 #### 1. `java.lang.NullPointerException` **异常描述:** `NullPointerException`是最常见的运行时异常之一,通常发生在试图访问一个尚未初始化或者被设置为`null`的对象实例时。...

    Android Caused by: java.lang.ClassNotFoundException解决办法

    同时,我们也可以通过日志信息来诊断问题,以便快速地找到解决方案。 ClassNotFoundException 是一个常见的异常,但它可以通过简单的检查和解决来避免。在 Android 开发中,我们需要注意这些可能的错误,以便确保...

    java.lang.ClassNotFoundException异常的解决1

    Java中的`ClassNotFoundException`异常通常表示在尝试加载特定类时,JVM无法找到对应的字节码文件。这个异常可能由多种原因引起,但在本场景中,它与Java 9引入的模块系统及其对Java EE API的影响密切相关。 在Java...

    java异常解决方案.docx

    Java 异常解决方案 Java 异常是 Java 开发中经常遇到的问题,本文档将提供 Java 异常解决方案,涵盖 Hibernate、Tomcat、Java 基本、JSP、SSH 整合等多个方面的异常解决方案。 一、Hibernate 异常解决方案 * org....

    JSP中ClassNotFoundException异常的解决办法.pdf

    在Java服务器页面(JSP)开发中,可能会遇到`ClassNotFoundException`异常,这通常是由于系统无法找到或加载指定的类导致的。...通过以上步骤,大多数JSP开发中的`ClassNotFoundException`问题都能得到解决。

    eclipse 报错java.lang.ClassNotFoundException: com.mysql.jdbc.Driver错误解决

    Driver Type JDBC version MySQL Server version Status 5.1 4 3.0, 4.0, 4.1, 4.2 4.1, 5.0, 5.1, 5.5, 5.6, 5.7 Recommended version 5.0 4 3.0 4.1, 5.0 Released version 3.1 4 3.0 4.1, 5.0 Obsolete

    java项目问题解决方案

    通过以上步骤,一般能够解决“ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource”的问题。然而,开发过程中遇到的错误可能多种多样,因此,了解如何阅读和分析异常信息,以及如何调整和管理项目...

    mysql-jdbc连接数据库-错误提示.docx

    MySQL-JDBC连接数据库错误提示及解决方案 在使用Java连接MySQL数据库时,经常会遇到一些错误提示,以下是在JDBC连接MySQL数据库时常见的错误提示及解决方案: 一、 ClassNotFoundException: com.mysql.jdbc.Driver...

    Eclipse plugin开发中的ClassNotFoundException问题

    然而,在开发过程中,开发者经常遇到各种问题,其中一种常见的问题是`ClassNotFoundException`。这个异常通常表明Java虚拟机(JVM)在尝试加载一个类时无法找到对应的.class文件。 在标题中提到的"Eclipse plugin...

    java 找不到指定类时发生的异常(ClassNotFoundException)

    在`CheckException_01.java`源代码中,可能包含了处理或演示如何解决`ClassNotFoundException`的示例代码。`Java.jpg`可能是一个与Java编程相关的图像,可能用于解释类加载过程或类路径概念的可视化。为了更深入地...

    Struts的java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource异常的解决方法

    总的来说,理解并解决"java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource"这一异常,不仅需要对Struts框架有一定了解,还需要掌握Java类加载机制以及数据库连接池的基本原理。通过正确...

    SSH各种问题集合及解决方案

    - 错误提示为`ClassNotFoundException: oracle.jdbc.driver.OracleDriver`,这表明Oracle JDBC驱动未被找到。 - 解决方法是在项目的classpath中加入Oracle JDBC驱动的jar文件,如`ojdbc14.jar`。 - 如果使用的是...

    weblogic10 与hibernate冲突解决方案 linux windows环境全解

    weblogic10 与hibernate冲突解决方案 错误如下:org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken linux windows 环境解决方案全解 Linux 启动脚本添加如下: export USER_...

    SSH_常见错误与解决方案

    ### SSH常见错误与解决方案 #### 一、Java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource 错误 在使用MyEclipse进行Struts项目开发时,配置`struts-config.xml`文件中的`data-sources`时...

Global site tag (gtag.js) - Google Analytics