CDH5中spark写mysql报“Did not find registered driver with class com.mysql.jdbc.Driver”错误原因
2016-05-19 20:02
441 查看
前几天把CDH5.7顺利的装起来了,今天想试下用spark往mysql里面写计算结果,结果老是提示“java.lang.IllegalStateException: Did not find registered driver with class com.mysql.jdbc.Driver”,用了各种方法,包括在spark-submit命令中加入
--jars 、--driver-class-path 都无法解决,都快崩溃了。
去看了下应用日志,发现driver所在的机器没有这个错误,仅仅是剩下的worker才会出现这个错误,于是判断问题的原因应该在于worker中没有mysql的驱动包,打开driver的日志,发现classpath参数是这样的“CLASSPATH -> {{PWD}}<CPS>{{PWD}}/__spark__.jar<CPS>$HADOOP_CLIENT_CONF_DIR<CPS>$HADOOP_CONF_DIR<CPS>$HADOOP_COMMON_HOME/*<CPS>$HADOOP_COMMON_HOME/lib/*<CPS>$HADOOP_HDFS_HOME/*<CPS>$HADOOP_HDFS_HOME/lib/*<CPS>$HADOOP_YARN_HOME/*<CPS>$HADOOP_YARN_HOME/lib/*<CPS>$HADOOP_MAPRED_HOME/*<CPS>$HADOOP_MAPRED_HOME/lib/*<CPS>$MR2_CLASSPATH<CPS>{{HADOOP_COMMON_HOME}}/../../../CDH-5.7.0-1.cdh5.7.0.p0.45/jars/ST4-4.0.4.jar:{{HADOOP_COMMON_HOME}}/../../../CDH-5.7.0-1.cdh5.7.0.p0.45/jars/accumulo-core-1.6.0.jar:......"
太长了,不全部复制了,发现会加载$HADOOP_YARN_HOME/*这个路径下的所有jar包,于是尝试把mysql的驱动包手动拷入每个worker节点中的该目录下,我是CDH5.7,因此目录全路径是“/opt/cloudera/parcels/CDH-5.7.0-1.cdh5.7.0.p0.45/lib/hadoop-yarn”,(每个yarn节点都要拷贝)。
做完这些事后,再跑一遍job,发现成功了,没有报错了,而且结果都写入mysql数据库了。开森!不过有点不明白,为什么CDH不把这些常用的jdbc驱动包一起打进去呢?
--jars 、--driver-class-path 都无法解决,都快崩溃了。
去看了下应用日志,发现driver所在的机器没有这个错误,仅仅是剩下的worker才会出现这个错误,于是判断问题的原因应该在于worker中没有mysql的驱动包,打开driver的日志,发现classpath参数是这样的“CLASSPATH -> {{PWD}}<CPS>{{PWD}}/__spark__.jar<CPS>$HADOOP_CLIENT_CONF_DIR<CPS>$HADOOP_CONF_DIR<CPS>$HADOOP_COMMON_HOME/*<CPS>$HADOOP_COMMON_HOME/lib/*<CPS>$HADOOP_HDFS_HOME/*<CPS>$HADOOP_HDFS_HOME/lib/*<CPS>$HADOOP_YARN_HOME/*<CPS>$HADOOP_YARN_HOME/lib/*<CPS>$HADOOP_MAPRED_HOME/*<CPS>$HADOOP_MAPRED_HOME/lib/*<CPS>$MR2_CLASSPATH<CPS>{{HADOOP_COMMON_HOME}}/../../../CDH-5.7.0-1.cdh5.7.0.p0.45/jars/ST4-4.0.4.jar:{{HADOOP_COMMON_HOME}}/../../../CDH-5.7.0-1.cdh5.7.0.p0.45/jars/accumulo-core-1.6.0.jar:......"
太长了,不全部复制了,发现会加载$HADOOP_YARN_HOME/*这个路径下的所有jar包,于是尝试把mysql的驱动包手动拷入每个worker节点中的该目录下,我是CDH5.7,因此目录全路径是“/opt/cloudera/parcels/CDH-5.7.0-1.cdh5.7.0.p0.45/lib/hadoop-yarn”,(每个yarn节点都要拷贝)。
做完这些事后,再跑一遍job,发现成功了,没有报错了,而且结果都写入mysql数据库了。开森!不过有点不明白,为什么CDH不把这些常用的jdbc驱动包一起打进去呢?
相关文章推荐
- Spark RDD API详解(一) Map和Reduce
- 使用spark和spark mllib进行股票预测
- Spark随谈——开发指南(译)
- Spark,一种快速数据分析替代方案
- eclipse 开发 spark Streaming wordCount
- Understanding Spark Caching
- ClassNotFoundException:scala.PreDef$
- Windows 下Spark 快速搭建Spark源码阅读环境
- Spark中将对象序列化存储到hdfs
- 使用java代码提交Spark的hive sql任务,run as java application
- Spark机器学习(一) -- Machine Learning Library (MLlib)
- Spark机器学习(二) 局部向量 Local-- Data Types - MLlib
- Spark机器学习(三) Labeled point-- Data Types
- Spark初探
- Spark Streaming初探
- Spark本地开发环境搭建
- 搭建hadoop/spark集群环境
- Spark HA部署方案
- Spark HA原理架构图
- spark内存概述