我已经安装了最近的cloudera集群CDH5.5单节点,我在将db从mysql导入hdfs时面临以下错误。 我能够成功运行list-dtabases。 请让我知道以下问题的根本原因。
[cloudera @ quickstart~] $ sqoop import --connect “jdbc:mysql://127.0.0.1/nvegesn” - 用户名root --password XXXX --table产品警告:/usr/lib/sqoop/../accumulo不存在! Accumulo进口将失败。请将$ ACCUMULO_HOME设置为root 你的Accumulo安装。 15/12/10 20:14:00 INFO sqoop.Sqoop: 运行Sqoop版本:1.4.6-cdh5.5.0 15/12/10 20:14:00 WARN tool.BaseSqoopTool:在命令行上设置密码是 不安全的。考虑使用-P代替。 15/12/10 20:14:01 INFO manager.MySQLManager:准备使用MySQL流式结果集。 15/12/10 20:14:01 INFO tool.CodeGenTool:开始代码生成 15/12/10 20:14:01 INFO manager.SqlManager:执行SQL语句: SELECT t。* FROM
products
AS t LIMIT 1 15/12/10 20:14:01错误 manager.SqlManager:从数据库读取错误: java.sql.SQLException:流结果集 com.mysql.jdbc.RowDataDynamic@47d0ac94仍处于活动状态。没有陈述 可以在任何流式传输结果集打开并在a上使用时发布 给定连接。确保您已在任何活动状态上调用.close() 在尝试更多查询之前传输结果集。 java.sql.SQLException:流结果集 com.mysql.jdbc.RowDataDynamic@47d0ac94仍处于活动状态。没有陈述 可以在任何流式传输结果集打开并在a上使用时发布 给定连接。确保您已在任何活动状态上调用.close() 在尝试更多查询之前传输结果集。在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:934)at at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:931)at at com.mysql.jdbc.MysqlIO.checkForOutstandingStreamingData(MysqlIO.java:2735) 在com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1899)at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)at at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2619)at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2569)at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1524)at com.mysql.jdbc.ConnectionImpl.getMaxBytesPerChar(ConnectionImpl.java:3003) 在com.mysql.jdbc.Field.getMaxBytesPerCharacter(Field.java:602)at com.mysql.jdbc.ResultSetMetaData.getPrecision(ResultSetMetaData.java:445) 在 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:327) 在 org.apache.sqoop.orm.ClassWriter.getColumnTypes(ClassWriter.java:1834) 在org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1646) 在 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)at org.apache.sqoop.Sqoop.run(Sqoop.java:143)at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)at at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)at at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)at at org.apache.sqoop.Sqoop.main(Sqoop.java:236)15/12/10 20:14:01错误 tool.ImportTool:遇到运行导入作业的IOException: java.io.IOException:没有为ClassWriter生成的列
答案 0 :(得分:0)
如果您要导入的表没有主键,请尝试给出“m 1”然后结束。这将只触发一个映射器。
默认情况下,sqoop将触发4个映射器。在这种情况下,它可能不知道数据需要在4个映射器之间拆分哪个列范围。 希望它有所帮助。