2015-05-29 112 views
0

我在Hadoop中编写程序,它使用MySql从dfs中读取数据。我在运行时收到此消息:Hadoop不加载jdbc驱动程序

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>来运行,但也失败了。

+0

请检查该http://stackoverflow.com/questions/2591505/java-lang-classnotfoundexception-com-mysql-jdbc-driver –

+0

改进的问题 – Jerome

回答

0

你可以尝试复制

使用mysql-connector-java的5.1.25-bin.jar

的/ var/lib中/ Hadoop的

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

+0

我尝试,但它不能正常工作 – Copper

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文件版本。

+0

我试试,但不要不行!伤心 – Copper

相关问题