CDH5中spark写mysql报“Did not find registered driver with class com.mysql.jdbc.Driver”错误原因

前几天把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驱动包一起打进去呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值