我正在尝试使用sqoop从mysql导入表数据。但是,当我这样做时,我得到了一个糟糕的握手错误。许多在线论坛表明问题与mysql conf文件有关。但是,我没有在conf文件中看到绑定地址条目。这是我在尝试运行命令sqoop list-databases --connect jdbc:mysql://localhost/hadoop --username hadoop -P
时看到的错误。 hadoop是我想连接的数据库,用户名也是hadoop。
18/04/24 17:06:53 INFO manager.MySQLManager: Preparing to use a MySQL
streaming resultset.
18/04/24 17:06:53 INFO tool.CodeGenTool: Beginning code generation
18/04/24 17:06:53 ERROR manager.SqlManager: Error executing statement:
java.sql.SQLException: Communication link failure: Bad handshake
java.sql.SQLException: Communication link failure: Bad handshake
at com.mysql.jdbc.MysqlIO.init(Unknown Source)
at com.mysql.jdbc.Connection.connectionInit(Unknown Source)
at com.mysql.jdbc.jdbc2.Connection.connectionInit(Unknown Source)
at com.mysql.jdbc.Driver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at org.apache.sqoop.manager.SqlManager.makeConnection(SqlManager.java:904)
答案 0 :(得分:0)
如果你已经在serverIP上提到了一个数据库i-e“--connect jdbc:mysql:// localhost / hadoop ”,你就不能使用“list-database”。 尝试使用相同的sqoop调用命令,而不使用数据库名称“hadoop”,然后调用“list-database”。 另外请记住,这是在sqoop调用中使用驱动程序,但首先您或您的系统管理员必须将特定驱动程序放在'lib'文件夹中的sqoop目录中。 希望这有帮助!