故障现象
在HDP sandbox中使用sqoop导出mysql数据报错
18/06/24 07:03:31 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
18/06/24 07:03:31 INFO tool.CodeGenTool: Beginning code generation
18/06/24 07:03:33 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `customertest` AS t LIMIT 1
18/06/24 07:03:33 ERROR manager.SqlManager: Error reading from database: java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@4d154ccd is still active. No statements may be issued when any streaming result sets are open and in use on a given connection. Ensure that you have called .close() on any active streaming result sets before attempting more queries.
java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@4d154ccd is still active. No statements may be issued when any streaming result sets are open and in use on a given connection. Ensure that you have called .close() on any active streaming result sets before attempting more queries.
问题分析
看报错处信息,如下所示,在网上搜索后基本确实是mysql的drive的问题,因此,需要替换sqoop里lib目录下的mysql驱动包,
Streaming result set com.mysql.jdbc.RowDataDynamic@4d154ccd is still active
解决步骤
HDP中,各组件的lib目录为/usr/hdp/2.6.4.0-91/<组件名>
进入/usr/hdp/2.6.4.0-91/sqoop/lib目录下,删除已有过的mysql驱动(是个软链接,直接删除或者改名)
安装如下命令下载新的驱动
wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.32.tar.gz
再次执行sqoop命令,可以正常执行。