0

I am writing a program in Hadoop, which uses MySql to read data from dfs. I get this message upon run:

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)

When I run it without Hadoop, I'm not getting this error.

I have put mysql-connector.jar to $Hadoop/lib, tried to run with -libjars <mysql-connector path> but it fails as well.

BuZz
  • 16,318
  • 31
  • 86
  • 141
Copper
  • 11
  • 3

2 Answers2

0

You can try copying

mysql-connector-java-5.1.25-bin.jar

to

/var/lib/hadoop

It works for me. The startup script will tell the classpath to look here for the connector jar for some reason.

0

METHOD 1. Add this line in hadoop-env.sh:

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

METHOD 2. Add this line in /home/hadoop/.bashrc: (Here hadoop is my hadoop username)

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

NOTE: Change mysql-connector-java-x.x.xx.jar to your MySQL connector jar file version.

Rajesh N
  • 2,554
  • 1
  • 13
  • 17