1

sqoop to transfer data to HDFS from Teradata: Getting error as below: -bash-4.1$ sqoop import --connection-manager com.cloudera.sqoop.manager.DefaultManagerFactory --driver com.teradata.jdbc.TeraDriver \

--connect jdbc:teradata://dwsoat.dws.company.co.uk/DATABASE=TS_72258_BASELDB \ --username userid -P --table ADDRESS --num-mappers 3 \ --target-dir /user/nathalok/ADDRESS Warning: /apps/cloudera/parcels/CDH-5.1.3-1.cdh5.1.3.p0.12/bin/../lib/sqoop/../accumulo does not exist! Accumulo imports will fail. Please set $ACCUMULO_HOME to the root of your Accumulo installation. 14/10/29 14:00:14 INFO sqoop.Sqoop: Running Sqoop version: 1.4.4-cdh5.1.3 14/10/29 14:00:14 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead. 14/10/29 14:00:14 ERROR sqoop.ConnFactory: Sqoop wasn't able to create connnection manager properly. Some of the connectors supports explicit --driver and some do not. Please try to either specify --driver or leave it out. 14/10/29 14:00:14 ERROR tool.BaseSqoopTool: Got error creating database manager: java.io.IOException: java.lang.NoSuchMethodException: com.cloudera.sqoop.manager.DefaultManagerFactory.(java.lang.String, com.cloudera.sqoop.SqoopOptions) at org.apache.sqoop.ConnFactory.getManager(ConnFactory.java:165) at org.apache.sqoop.tool.BaseSqoopTool.init(BaseSqoopTool.java:243) at org.apache.sqoop.tool.ImportTool.init(ImportTool.java:84) at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:494) at org.apache.sqoop.Sqoop.run(Sqoop.java:147) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183) at org.apache.sqoop.Sqoop.runTool(Sqoop.java:222) at org.apache.sqoop.Sqoop.runTool(Sqoop.java:231) at org.apache.sqoop.Sqoop.main(Sqoop.java:240) Caused by: java.lang.NoSuchMethodException: com.cloudera.sqoop.manager.DefaultManagerFactory.(java.lang.String, com.cloudera.sqoop.SqoopOptions) at java.lang.Class.getConstructor0(Class.java:2810) at java.lang.Class.getDeclaredConstructor(Class.java:2053) at org.apache.sqoop.ConnFactory.getManager(ConnFactory.java:151) ... 9 more

-bash-4.1$

Any help will be appreciated.

user3754136
  • 509
  • 11
  • 25

1 Answers1

6

To get Teradata working properly using a Cloudera distribution, you need to do the following:

  1. Install the Teradata JDBC jars in /var/lib/sqoop. For me these were terajdbc4.jar and tdgssconfig.jar.
  2. Install either Cloudera Connector Powered by Teradata or the Cloudera Connector for Teradata installed somewhere on your filesystem (I prefer /var/lib/sqoop).
  3. In /etc/sqoop/conf/managers.d/, create a file (of any name) and add com.cloudera.connector.teradata.TeradataManagerFactory=<location of connector jar>. For example, I have /etc/sqoop/conf/managers.d/teradata => com.cloudera.connector.teradata.TeradataManagerFactory=/var/lib/sqoop/sqoop-connector-teradata-1.2c5.jar.

There are different ways to install the Teradata connector as well. For example, it may be easier to use Cloudera Manager.

If you're still having trouble, try reaching out to the sqoop mailing list.

generalpiston
  • 911
  • 7
  • 11
  • 1. sqoop list-databases --connect jdbc:teradata://net.dws.server.co.uk --username $user -password $pass 2.sqoop import -libjars /home/path/tdgssconfig.jar,/home/path/terajdbc4.jar --driver com.teradata.jdbc.TeraDriver --connect "jdbc:teradata://server.co.uk/database=TS_75739" -m 1 --username test --password pass1# --query "...." Both this worked for me, only your server name should be reachable by DNS and it worked. – user3754136 Feb 25 '15 at 13:02