Sqoop iMport问题

时间:2015-12-11 04:24:23

标签: sqoop

我已经安装了最近的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生成的列

1 个答案:

答案 0 :(得分:0)

如果您要导入的表没有主键,请尝试给出“m 1”然后结束。这将只触发一个映射器。

默认情况下,sqoop将触发4个映射器。在这种情况下,它可能不知道数据需要在4个映射器之间拆分哪个列范围。  希望它有所帮助。