【问题标题】:Sqoop iMport IssuesSqoop 导入问题
【发布时间】:2015-12-11 04:24:23
【问题描述】:

我安装了最近的 cloudera 集群 CDH5.5 单节点,在将 db 从 mysql 导入 hdfs 时遇到以下错误。 能够成功运行命令列表数据库。 请让我知道以下问题的根本原因。

[cloudera@quickstart ~]$ sqoop import --connect "jdbc:mysql://127.0.0.1/nvegesn" --username root --password XXXX --table products 警告:/usr/lib/sqoop/../accumulo 不存在! Accumulo 导入将失败。请将 $ACCUMULO_HOME 设置为 您的 Accumulo 安装。 2010 年 15 月 12 日 20:14:00 信息 sqoop.Sqoop: 运行 Sqoop 版本:1.4.6-cdh5.5.0 15/12/10 20:14:00 WARN tool.BaseSqoopTool:在命令行上设置密码是 不安全。考虑改用 -P。 2010 年 15 月 12 日 20:14:01 信息 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 仍处于活动状态。没有声明 当任何流式传输结果集打开并在 给定的连接。确保您在任何活动上调用了 .close() 在尝试更多查询之前流式传输结果集。 java.sql.SQLException:流式处理结果集 com.mysql.jdbc.RowDataDynamic@47d0ac94 仍处于活动状态。没有声明 当任何流式传输结果集打开并在 给定的连接。确保您在任何活动上调用了 .close() 在尝试更多查询之前流式传输结果集。在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:934) 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:931) 在 com.mysql.jdbc.MysqlIO.checkForOutstandingStreamingData(MysqlIO.java:2735) 在 com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1899) 在 com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151) 在 com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2619) 在 com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2569) 在 com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1524) 在 com.mysql.jdbc.ConnectionImpl.getMaxBytesPerChar(ConnectionImpl.java:3003) 在 com.mysql.jdbc.Field.getMaxBytesPerCharacter(Field.java:602) 在 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) 在 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/12/10 20:14:01 错误 tool.ImportTool:运行导入作业时遇到 IOException: java.io.IOException: 没有要为 ClassWriter 生成的列

【问题讨论】:

  • 有一个相关的stackoverflow帖子http://stackoverflow.com/questions/29162447/sqoop-import-issue-with-mysql希望对您有所帮助。
  • 感谢 Abhi,因为我无法更改 Cloudera 集群中存在的 SQL 连接器 Jar。
  • 在命令中添加驱动程序后工作正常,如下所示 sqoop import --connect "jdbc:mysql://127.0.0.1/nvegesn" --driver com.mysql.jdbc.Driver --username root --password XXXX --table products

标签: sqoop


【解决方案1】:

如果您尝试导入的表没有主键,请尝试在结尾处输入“m 1”。这只会触发一个映射器。

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

【讨论】:

  • 嗨,Abhi,仍然面临同样的问题,我只使用主键创建了表。我可以看到这已在补丁 SQOOP-1400 中修复,该问题与 sql 连接器有关,但我无法编辑任何内容在 cloudera 机器中。
猜你喜欢
  • 2014-07-23
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
  • 1970-01-01
相关资源
最近更新 更多