`
zhao_rock
  • 浏览: 193130 次
  • 性别: 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
分享到:
评论

相关推荐

    ClassNotFoundException(解决方案).md

    总结而言,ClassNotFoundException异常的解决方案包括检查和修正导入语句、类路径设置、类名与文件名的匹配性、编译和运行时的环境配置。具体到特定的开发环境和工具,还需要检查构建工具的配置、IDE的项目设置以及...

    java.lang.ClassNotFoundException(解决方案).md

    通过遵循上述步骤和解决方案,大多数的ClassNotFoundException问题都可以得到解决。如果问题依旧存在,可能需要对项目的配置和环境设置进行更深入的检查。 此外,代码示例中提到的命令行编译和运行程序的操作,旨在...

    使用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的问题

    ClassNotFoundException解决办法.md

    解决`ClassNotFoundException`问题,首先要检查类路径和文件名是否正确,然后要检查项目构建路径和依赖配置是否无误,最后可以使用Java的反射机制尝试加载类。通过这些方法,基本可以覆盖大多数`...

    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`的对象实例时。...

    ClassNotFoundException如何解决.md

    解决ClassNotFoundException需要从多个方面入手,包括检查类的导入语句、确保类的路径正确、验证类的存在性和可访问性,以及使用正确的类加载器。 首先,需要检查类的导入语句是否正确。如果导入语句中的包名或类名...

    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....

Global site tag (gtag.js) - Google Analytics