Spark jar包找不到解决方法

今天在使用Spark中DataFrame往Mysql中插入RDD,但是一直报出以下的异常次信息:

[[email protected] ~]$  bin/spark-submit --master local[2]
	--jars lib/mysql-connector-java-5.1.35.jar
	--class  spark.sparkToJDBC ./spark-test_2.10-1.0.jar

spark assembly has been built with Hive, including Datanucleus jars on classpath
Exception in thread "main" java.sql.SQLException: No suitable driver found for
jdbc:mysql://www.iteblog.com:3306/spark?user=root&password=123&useUnicode=
true&characterEncoding=utf8&autoReconnect=true
	at java.sql.DriverManager.getConnection(DriverManager.java:602)
	at java.sql.DriverManager.getConnection(DriverManager.java:207)
	at org.apache.spark.sql.DataFrame.createJDBCTable(DataFrame.scala:1189)
	at spark.<span class="wp_keywordlink_affiliate"><a href="http://www.iteblog.com/archives/tag/spark" title="" target="_blank" data-original-title="View all posts in Spark">Spark</a></span>ToJDBC$.toMysqlFromJavaBean(SparkToJDBC.scala:20)
	at spark.SparkToJDBC$.main(SparkToJDBC.scala:47)
	at spark.SparkToJDBC.main(SparkToJDBC.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$
$runMain(SparkSubmit.scala:569)
	at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:166)
	at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:189)
	at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:110)
	at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

感觉很奇怪,我在启动作业的时候加了Mysql驱动啊在,怎么会出现这种异常呢??经过查找,发现在–jars参数里面加入Mysql是没有用的。通过查找,发现提交的作业可以通过加入--driver-class-path参数来设置driver的classpath,试了一下果然没有出现错误!

[[email protected] ~]$  bin/spark-submit --master local[2]
	--driver-class-path lib/mysql-connector-java-5.1.35.jar
	--class  spark.SparkToJDBC ./spark-test_2.10-1.0.jar

其实,我们还可以在spark安装包的conf/spark-env.sh通过配置SPARK_CLASSPATH来设置driver的环境变量,如下:

export SPARK_CLASSPATH=$SPARK_CLASSPATH:/iteblog/com/mysql-connector-java-5.1.35.jar

这样也可以解决上面出现的异常。但是,我们不能同时在conf/spark-env.sh里面配置SPARK_CLASSPATH和提交作业加上–driver-class-path参数,否则会出现以下异常:

[[email protected] ~]$  bin/spark-submit --master local[2]
	--driver-class-path lib/mysql-connector-java-5.1.35.jar
	--class  spark.SparkToJDBC ./spark-test_2.10-1.0.jar

Spark assembly has been built with Hive, including Datanucleus jars on classpath
Exception in thread "main" org.apache.spark.SparkException:
	Found both spark.driver.extraClassPath and SPARK_CLASSPATH. Use only the former.
	at org.apache.spark.SparkConf$$anonfun$validateSettings$6$$anonfun$apply
$7.apply(SparkConf.scala:339)
	at org.apache.spark.SparkConf$$anonfun$validateSettings$6$$anonfun$apply
$7.apply(SparkConf.scala:337)
	at scala.collection.immutable.List.foreach(List.scala:318)
	at org.apache.spark.SparkConf$$anonfun$validateSettings$6.apply(SparkConf.scala:337)
	at org.apache.spark.SparkConf$$anonfun$validateSettings$6.apply(SparkConf.scala:325)
	at scala.Option.foreach(Option.scala:236)
	at org.apache.spark.SparkConf.validateSettings(SparkConf.scala:325)
	at org.apache.spark.SparkContext.<init>(SparkContext.scala:197)
	at spark.SparkToJDBC$.main(SparkToJDBC.scala:41)
	at spark.SparkToJDBC.main(SparkToJDBC.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$
		deploy$SparkSubmit$$runMain(SparkSubmit.scala:569)
	at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:166)
	at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:189)
	at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:110)
	at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

转载自过往记忆(http://www.iteblog.com/)

http://www.iteblog.com/archives/1300点击打开链接

时间: 2024-10-13 23:29:54

Spark jar包找不到解决方法的相关文章

jar包冲突常用的解决方法

jar包冲突常见的异常为找不到类(java.lang.ClassNotFoundException).找不到具体方法(java.lang.NoSuchMethodError).字段错误( java.lang.NoSuchFieldError)或者类错误(java.lang.LinkageError): 常见的解决方法如下: 1.首先做法是打出工程文件的依赖树,将根据jar包依赖情况判定是不是同一个jar包依赖了多个版本,如果确认问题所在,直接exclusion其中错误的jar包即可: 2.如果通

java jar包 log4j不能输出解决方法

今天运行一个jar包,jar包中使用了springContext进行加载bean和log4j配置,但是发现不能正常输入日志. 代码中增加 Xxx.class.getResource("/"); 输出classpath,但是输出结果是null 查找后可以手动加载log4j配置文件 PropertyConfigurator.configure("/export/server/runjar/log4j.properties"); 问题解决

Eclipse maven工程 Missing artifact com.sun:tools:jar:1.5.0:system 解决方法

今天同事在使用eclipse,引入一个新的maven工程时报错:      Missing artifact com.sun:tools:jar:1.6.0:system   这个问题很奇怪,相同的代码,运行到我本地的Eclipse中时,没有发现问题,说明应该是环境配置的问题.(JDK?maven,Eclipse?) 从网上找了很多资料,发现大家大部分都只给出了解决方案,没有给出出现此问题的原因. 从maven的官网上看:http://maven.apache.org/general.html#

maven build 产生 Missing artifact org.jboss.logging:jar:3.1.0.GA解决方法

报错来源分析 由于hibernate-entitymanager 需要jboss logging .由于或多或少的原因导致 maven无法下载相关的jar文件. 解决办法: 访问 http://search.maven.org 搜索jboss-logging 点击all, 找到相关的的版本,再点击jar下载文件 下载好的文件放到maven仓库中对应版本的位置,一般是C:\Users\ username \ .m2\repository\org\jboss\logging\jboss-loggin

libnids关于计算校验和引起的抓不到包的现象的解决方法

libnids关于计算校验和引起的抓不到包的现象的解决方法: nids.h中有这么一段: struct nids_chksum_ctl { u_int netaddr; u_int mask; u_int action; u_int reserved; }; extern void nids_register_chksum_ctl(struct nids_chksum_ctl *, int); 这段是相关与计算校验和的,比较新的网卡驱动会自动计算校验和,我们要做的就是把它关掉,方法是: 在mai

android studio导jar包找不到类的解决方法

今天更新了universal-image-loader-1.9.5.jar文件,studio死活找不到其中相关的类,上网百度试了很多办法,总算解决了,具体方法跟一篇老外的帖子的差不多,这里分享下. 解决步骤: Something went wrong in incremental build system. One of this should help: Menu Build -> Rebuild project Delete folder /build Close Android Studi

【转自】Missing artifact com.sun:tools:jar 1.5.0 终极解决方法

在使用m2eclipse插件时,在pom.xml中添加struts2-core.jar包后,需要依赖java运行时的tools.jar进行依赖.但是,此时eclipse无法读取tools包,出现如下错误: Missing artifact com.sun:tools:jar 1.5.0 解决办法一: 手动配置pom.xml,添加一个dependency如下: <dependency><groupId>com.sun</groupId><artifactId>

Missing artifact com.sun:tools:jar 1.5.0 终极解决方法

在使用m2eclipse插件时,在pom.xml中添加struts2-core.jar包后,需要依赖java运行时的tools.jar进行依赖.但是,此时eclipse无法读取tools包,出现如下错误: Missing artifact com.sun:tools:jar 1.5.0 解决办法一: 手动配置pom.xml,添加一个dependency如下: <dependency><groupId>com.sun</groupId><artifactId>

android 引入第三方jar包 找不到类

============问题描述============ 我的android项目,引入第三方jar包的方法是将引入的六个json包放到项目的lib文件夹里,通过添加到userlib中,在项目中引用userlib,项目这样部署,编译阶段没有报错一切正常 ,但是在运行的时候,就会报javanotfound的错误,找不到json包中的一个JSONObject这个类!  上网查过了,还是试过其他的方法,直接通过Add ExternalJARS...方法引入,但是更不行,直接报错[2012-02-29 1