Hadoop不加载jdbc驱动程序

时间:2015-05-29 05:06:49

标签: java mysql hadoop jdbc

我正在Hadoop中编写一个程序,它使用MySql从dfs读取数据。我在运行时收到此消息:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at ConnectDtb.<init>(ConnectDtb.java:14)
    at WriteToDtb.<init>(WriteToDtb.java:14)
    at WriteToDtb.main(WriteToDtb.java:61)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

当我在没有Hadoop的情况下运行它时,我没有收到此错误。

我已将mysql-connector.jar添加到$Hadoop/lib,尝试使用-libjars <mysql-connector path>,但也失败了。

2 个答案:

答案 0 :(得分:0)

您可以尝试复制

  

MySQL的连接器的Java-5.1.25-bin.jar

  

的/ var / lib中/ hadoop的

它对我有用。由于某种原因,启动脚本将告诉类路径在这里查找连接器jar。

答案 1 :(得分:0)

方法1。hadoop-env.sh中添加此行:

export HADOOP_LIB=$HADOOP/lib
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_LIB/mysql-connector-java-x.x.xx.jar

方法2。/home/hadoop/.bashrc添加此行:(此处 hadoop 是我的hadoop用户名)

export HADOOP_LIB=$HADOOP/lib
export CLASSPATH=$CLASSPATH:$HADOOP_LIB/mysql-connector-java-x.x.xx.jar
  

注意: mysql-connector-java-x.x.xx.jar 更改为您的MySQL连接器jar文件版本。