mapreduce找不到mysql驱动类

写了一个mapreduce程序,使用DBInputFormat和DBOutputFormat读写mysql,本地运行正常,将程序打成jar包上传到yarn集群上面运行,一直报mysql的驱动类找不到,添加--libjars或者job.addFileToClassPath()都不行,但是mysql的驱动明明已经打到jar包里面了.

你好,请问你的mysql驱动是否放在打在WEB-INF文件夹下了,看你本地运行没问题,驱动版本肯定也没问题,主要还是打包的问题。

在运行 MapReduce 程序时,如果使用了 DBInputFormat 或 DBOutputFormat 连接 MySQL 数据库,需要将 MySQL 驱动程序添加到 MapReduce 程序的 Classpath 中。如果已经将 MySQL 驱动程序打包到了 Jar 包中,但是在运行时仍然找不到驱动程序,可能是由于以下原因:

Jar 包中的 MySQL 驱动程序不是标准的 Java 类库文件。请确保 Jar 包中的驱动程序是正确的 Java 类库文件,或者尝试使用其他版本的 MySQL 驱动程序。

MySQL 驱动程序没有被正确地加载到 Classpath 中。可以尝试将 MySQL 驱动程序的路径添加到 Hadoop 的 Classpath 中,或者在启动 MapReduce 程序时使用 -libjars 选项将 MySQL 驱动程序添加到 Classpath 中。如果使用了 Oozie 等 MapReduce 调度工具,还需要将 MySQL 驱动程序添加到调度工具的 Classpath 中。

MySQL 驱动程序和 Hadoop 版本不兼容。请确保使用的 MySQL 驱动程序和 Hadoop 版本兼容。可以尝试使用其他版本的 MySQL 驱动程序或 Hadoop。

MySQL 数据库没有启动或配置错误。请确保 MySQL 数据库已经正确地配置,并且可以被 MapReduce 程序正确地访问。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇文章:MapReduce 写入数据到MySql数据库 也许能够解决你的问题,你可以看下
  • 除此之外, 这篇博客: MapReduce 写入数据到MySql数据库中的 六、MySql查询结果 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    mysql> select * from output;
    
    +-----------+-------+
    
    | name      | count |
    
    +-----------+-------+
    
    | archana |     2    |
    
    |  XYZ      |     1  |
    
    +----------+--------+
    

    END

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

我把mysql的驱动包放在hadoop common包下,重启hadoop,就正常运行了 但是在代码里面设置将mysql驱动包添加到classpath job. addArchiveToClassPath job.addFileToClassPath 下却不起作用。