error trying to import data using scoop


3 Answer(s)


Hi Subhra,

The error:

Error executing statement: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

It shows , the error you are getting because the communication between your sqoop and mysql was not able to set.

Please open your Mysql and grant all the permission to your Virtual machine IP/gateway to allow the connection.

Note: For same documents are available in your dashboard. Please refer document name - "Sqoop MySQL to HDFS"

 

Hope this helps.

Thanks.


After doing that I keep getting the following error

 

[cloudera@localhost sqoop]$ bin/sqoop import --connect jdbc:mysql:/<windows ip address>/world --table city --username root -P --target-dir /user/cloudera/class-8/ev/sqoopOut1 -m 2
Enter password: 
16/09/30 18:11:50 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
16/09/30 18:11:50 INFO tool.CodeGenTool: Beginning code generation
16/09/30 18:11:51 ERROR manager.SqlManager: Error executing statement: java.sql.SQLException: Access denied for user 'root'@'LAPTOP-GTV74EMC' (using password: YES)
java.sql.SQLException: Access denied for user 'root'@'LAPTOP-GTV74EMC' (using password: YES)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3603)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3535)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:934)
    at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4104)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1299)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2338)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2371)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2163)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:378)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at org.apache.sqoop.manager.SqlManager.makeConnection(SqlManager.java:801)
    at org.apache.sqoop.manager.GenericJdbcManager.getConnection(GenericJdbcManager.java:52)
    at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:660)
    at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:683)
    at org.apache.sqoop.manager.SqlManager.getColumnTypesForRawQuery(SqlManager.java:240)
    at org.apache.sqoop.manager.SqlManager.getColumnTypes(SqlManager.java:223)
    at org.apache.sqoop.manager.ConnManager.getColumnTypes(ConnManager.java:347)
    at org.apache.sqoop.orm.ClassWriter.getColumnTypes(ClassWriter.java:1277)
    at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1089)
    at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:96)
    at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:396)
    at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:502)
    at org.apache.sqoop.Sqoop.run(Sqoop.java:145)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:181)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:220)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:229)
    at org.apache.sqoop.Sqoop.main(Sqoop.java:238)
16/09/30 18:11:51 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: No columns to generate for ClassWriter
    at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1095)
    at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:96)
    at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:396)
    at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:502)
    at org.apache.sqoop.Sqoop.run(Sqoop.java:145)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:181)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:220)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:229)
    at org.apache.sqoop.Sqoop.main(Sqoop.java:238)
 


I found solution to this , but the solution is very odd

I gave grant the following way

GRANT ALL PRIVILEGES ON *.* TO root@'LAPTOP-GTV74EMC' IDENTIFIED BY 'root' WITH GRANT OPTION;

I think it worked because my cloudera VM is not connecting to mysql using the ip as host but the name 'LAPTOP-GTV74EMC'

Now after giving this grant, user root has access to host 'LAPTOP-GTV74EMC'

How do I make my cloudera VM connect to mysql using ip address and not this host name 'LAPTOP-GTV74EMC' ?