您的位置:首页 > 数据库 > MySQL

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驱动包一起打进去呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息