我试图使用spark从我的oracle数据库导入一个表,这里我使用Scala导入该表。我的jdbc7.jar驱动程序是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之类的任何操作时,它会抛出错误下面。
`
致因: java.lang.ClassLoader.findClass(ClassLoader.java:530):oracle.jdbc.OracleDriver at org.apache.spark.util.ParentClassLoader.findClass(ParentClassLoader.scala:26) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at org.apache.spark.util.ParentClassLoader.loadClass(ParentClassLoader.scala:34) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.apache.spark.util.ParentClassLoader.loadClass(ParentClassLoaderorg.apache.spark.repl.ExecutorClassLoader.findClass(ExecutorClassLoader.scala:77) ( .scala:30) . 21
`
发布于 2017-12-05 13:13:01
此错误是因为Spark无法从每个核心节点定位ojdbc7.jar。因此,将这个jar放置在/usr/lib/ So /jar这样的共享位置将解决这个问题。
发布于 2020-02-06 16:00:22
您也可以做一些其他的事情,包括将jar文件完整的位置作为一个依赖项添加到解释器中的spark部分中作为工件。
如果只希望%jdbc工作,那么在解释器下更新jdbc部分,将jar文件完整位置添加为依赖项下的工件,并相应地更新default.driver、default.url、default.user、default.password。
https://stackoverflow.com/questions/47592072
复制相似问题