我正在尝试使用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个
`
答案 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相应地