我在用
df.write.mode("append").jdbc("jdbc:MysqL://ip:port/database","table_name",properties)
插入MysqL中的表.
另外,我在我的代码中添加了Class.forName(“com.MysqL.jdbc.Driver”).
当我提交我的Spark应用程序时:
spark-submit --class MY_MAIN_CLASS
--master yarn-client
--jars /path/to/MysqL-connector-java-5.0.8-bin.jar
--driver-class-path /path/to/MysqL-connector-java-5.0.8-bin.jar
MY_APPLICATION.jar
这种纱线客户端模式适合我.
但是当我使用纱线群集模式时:
spark-submit --class MY_MAIN_CLASS
--master yarn-cluster
--jars /path/to/MysqL-connector-java-5.0.8-bin.jar
--driver-class-path /path/to/MysqL-connector-java-5.0.8-bin.jar
MY_APPLICATION.jar
它不起作用.我也试过设置“–conf”:
spark-submit --class MY_MAIN_CLASS
--master yarn-cluster
--jars /path/to/MysqL-connector-java-5.0.8-bin.jar
--driver-class-path /path/to/MysqL-connector-java-5.0.8-bin.jar
--conf spark.executor.extraClassPath=/path/to/MysqL-connector-java-5.0.8-bin.jar
MY_APPLICATION.jar
但仍然得到“找不到适合jdbc的驱动程序”错误.
最佳答案
有3种可能的解决方案,
>您可能希望使用构建管理器(Maven,SBT)组装应用程序,因此您无需在spark-submit cli中添加依赖项.
>您可以在spark-submit cli中使用以下选项:
--jars $(echo ./lib/*.jar | tr ' ' ',')
说明:假设您的所有jar都在项目根目录的lib目录中,这将读取所有库并将它们添加到应用程序提交.
>您还可以尝试在SPARK_HOME / conf / spark-default.conf文件中配置这两个变量:spark.driver.extraClassPath和spark.executor.extraClassPath,并将这些变量的值指定为jar文件的路径.确保工作节点上存在相同的路径.