Spark版本:2.2.0_2.11
我们在项目中通过Spark SQL JDBC连接MySQL,在启动Driver/Executor执行的时候都碰到了这个问题。网上解决方案我们全部都试过了,奉上我们自己验证通过的方案:
1、在spark2-submit中指定好如下配置(我们使用的是mysql-connector-java-5.1.38.jar):
- --driver-class-path /local/to/path/mysql-connector-java-5.1.38.jar
2、在每台DataNode上,按上述路径“/local/to/path/mysql-connector-java-5.1.38.jar”,原样搞一份相同路径和jar包拷贝。比如有datanode1,datanode2,datanode3这几台DataNode,则在datanode1,2,3上都新建/local/to/path/,然后拷贝mysql-connector-java-5.1.38.jar并放在该路径下,即可。
3、保证上述1,2配置正确,则不需要在options中增加“driver”的配置项;
4、保证上述1,2配置正确,则不需要在spark2-submit中增加“spark.driver.extraClassPath和spark.executor.extraClassPath”配置项。
至于2为什么要这么玩,我还没有深入研究过,大家有答案可以回复下,感激~