Spark执行器抛出错误“java.lang.ClassNotFoundException:oracle.jdbc.OracleDriver”

时间:2017-12-01 11:06:44

标签: scala apache-spark

我正在尝试使用spark从我的oracle数据库导入一个表,在这里我使用Scala导入表。 我的jdbc驱动程序是ojdbc7.jar,它在配置文件中的参数spark.driver.extraClassPath和spark.executor.extraClassPath中都添加了

spark.driver.extraClassPath :/usr/lib/hadoop-lzo/lib/*:/usr/lib/hadoop/hadoop-aws.jar:/usr/share/aws/aws-java-sdk/*:/usr/share/aws/emr/emrfs/conf:/usr/s hare/aws/emr/emrfs/lib/*:/usr/share/aws/emr/emrfs/auxlib/*:/usr/share/aws/emr/security/conf:/usr/share/aws/emr/security/lib/*:/home/hadoop/ojdbc7.jar spark.driver.extraLibraryPath /usr/lib/hadoop/lib/native:/usr/lib/hadoop-lzo/lib/native spark.executor.extraClassPath :/usr/lib/hadoop-lzo/lib/*:/usr/lib/hadoop/hadoop-aws.jar:/usr/share/aws/aws-java-sdk/*:/usr/share/aws/emr/emrfs/conf:/usr/s hare/aws/emr/emrfs/lib/*:/usr/share/aws/emr/emrfs/auxlib/*:/usr/share/aws/emr/security/conf:/usr/share/aws/emr/security/lib/*:/home/hadoop/ojdbc7.jar spark.executor.extraLibraryPath /usr/lib/hadoop/lib/native:/usr/lib/hadoop-lzo/lib/native

我可以成功导入表格。我可以打印表的架构。但是在执行任何操作(如Count,show()时,它会抛出错误

`

  

引起:java.lang.ClassNotFoundException:oracle.jdbc.OracleDriver   在java.lang.ClassLoader.findClass(ClassLoader.java:530)at   org.apache.spark.util.ParentClassLoader.findClass(ParentClassLoader.scala:26)   在java.lang.ClassLoader.loadClass(ClassLoader.java:424)at   org.apache.spark.util.ParentClassLoader.loadClass(ParentClassLoader.scala:34)   在java.lang.ClassLoader.loadClass(ClassLoader.java:357)at   org.apache.spark.util.ParentClassLoader.loadClass(ParentClassLoader.scala:30)   在   org.apache.spark.repl.ExecutorClassLoader.findClass(ExecutorClassLoader.scala:77)   ......还有21个

`

2 个答案:

答案 0 :(得分:0)

此错误是因为Spark无法从每个核心节点找到ojdbc7.jar。因此将此jar放在像/ usr / lib / spark / jars这样的共享位置将解决此问题。

答案 1 :(得分:0)

您还可以做其他一些事情,包括将jar文件的完整位置添加为解释器中spark部分下的依赖项(作为工件)

如果只希望%jdbc工作,请更新解释器下的jdbc部分,将jar文件的完整位置添加为依赖项下的工件,并更新default.driver,default.url,default.user,default.password相应地