【发布时间】:2015-11-17 13:20:30
【问题描述】:
我正在使用以下命令从 mysql 表中获取数据到 hive 表:
sqoop import \
--connect jdbc:mysql://xx.xx.xx.xx/orderdbms \
--username=orderuser \
--password=orderpass \
--table=order \
--where="DATE(created)='2015-08-20'" \
--hive-import \
--hive-table=orderstat.order \
--target-dir=/user/ordermanager/sqoopdata/orders \
--direct
执行上述操作时出现以下错误:
从数据库读取错误:java.sql.SQLException: Streaming result 设置 com.mysql.jdbc.RowDataDynamic@1f16ebd3 仍处于活动状态。不 当任何流式结果集打开并且 在给定的连接上使用。确保您已调用 .close() 在尝试更多查询之前任何活动的流式传输结果集。 java.sql.SQLException:流式处理结果集 com.mysql.jdbc.RowDataDynamic@1f16ebd3 仍处于活动状态。没有声明 当任何流式传输结果集打开并在 给定的连接。确保您在任何活动上调用了 .close() 在尝试更多查询之前流式传输结果集。在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:914) 在 com.mysql.jdbc.MysqlIO.checkForOutstandingStreamingData(MysqlIO.java:2181) 在 com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1542) 在 com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723) 在 com.mysql.jdbc.Connection.execSQL(Connection.java:3277) 在 com.mysql.jdbc.Connection.execSQL(Connection.java:3206) 在 com.mysql.jdbc.Statement.executeQuery(Statement.java:1232) 在 com.mysql.jdbc.Connection.getMaxBytesPerChar(Connection.java:3673) 在 com.mysql.jdbc.Field.getMaxBytesPerCharacter(Field.java:482) 在 com.mysql.jdbc.ResultSetMetaData.getPrecision(ResultSetMetaData.java:443) 在 org.apache.sqoop.manager.SqlManager.getColumnInfoForRawQuery(SqlManager.java:286) 在 org.apache.sqoop.manager.SqlManager.getColumnTypesForRawQuery(SqlManager.java:241) 在 org.apache.sqoop.manager.SqlManager.getColumnTypes(SqlManager.java:227) 在 org.apache.sqoop.manager.ConnManager.getColumnTypes(ConnManager.java:295) 在 org.apache.sqoop.orm.ClassWriter.getColumnTypes(ClassWriter.java:1833) 在 org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1645) 在 org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:107) 在 org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:478) 在 org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605) 在 org.apache.sqoop.Sqoop.run(Sqoop.java:143) 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) 在 org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179) 在 org.apache.sqoop.Sqoop.runTool(Sqoop.java:218) 在 org.apache.sqoop.Sqoop.runTool(Sqoop.java:227) 在 org.apache.sqoop.Sqoop.main(Sqoop.java:236) 15/08/24 11:54:46 错误 tool.ImportTool:运行导入作业时遇到 IOException: java.io.IOException:没有为 ClassWriter 生成列 org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1651) 在 org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:107) 在 org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:478) 在 org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605) 在 org.apache.sqoop.Sqoop.run(Sqoop.java:143) 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) 在 org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179) 在 org.apache.sqoop.Sqoop.runTool(Sqoop.java:218) 在 org.apache.sqoop.Sqoop.runTool(Sqoop.java:227) 在 org.apache.sqoop.Sqoop.main(Sqoop.java:236)
谁能解释一下是什么原因造成的?客户端和mysql服务器之间的语法或连接问题是否存在问题。
【问题讨论】:
-
我不知道
hive和sqoop。阅读错误堆栈消息,我认为在您发出hive导入之前,sqoop导入尚未完成,因此您可能需要关闭连接并显式启动第二次导入。 -
你能不能把mysql jar换成sqoop lib目录下最新版本的jar