I ran the following sqoop-codegen command followed by sqoop-merge command, but get
java.lang.ClassNotFoundException: Class /user/output/bin/customerInfo.class not foundTried with /user/output/bin/customerInfo and get the same error. The .java, .class and .jar file are in LFS in dir /user/output/bin.
sqoop codegen --connect jdbc:mysql://sandbox.hortonworks.com:3306/test --username root --password askfor1 --table customerInfo --map-column-java mtts=String,startdte=String --null-string "" --null-non-string "" --driver com.mysql.jdbc.Driver --bindir /user/output/bin --outdir /user/output/binthen ran the sqoop merge:
sqoop merge --class-name /user/output/bin/customerInfo.class --jar-file /user/output/bin/customerInfo.jar --new-data /user/output/part-m-00000 --onto /user/output/part-m-00001 --target-dir /user/output --merge-key Name
Am I missing anything?
Not sure if you already solved it, I was facing the same issue today and finally was able to resolve it.
You dont have to give .class extension in the argument, just give --class-name customerInfo
This is the command I ran and its working fine, merging data from two directories into a new hdfs directory, keeping newer directory data as priority:
sqoop merge --class-name customerInfo --jar-file customerInfo.jar --new-date /user/cloudera/new_dir/ --onto /user/cloudera/old_dir --merge-key id --target-dir /user/cloudera/new_emp_dir
I kept the .jar and .class files in the bin directory of sqoop where i run commands, if you have it in some other paths - give the complete path and make sure it has the appropriate access. Hope this helps.
I'd be interested and thrilled if we could help each other learn in future too!