0

我一直在尝试使用 Sqoop 将表从 Vectorwise 导入 Hive。我下载了 Vectorwise JDBC 驱动程序等。它只是行不通。

这是我正在使用的命令: sudo -u hdfs sqoop import --driver com.ingres.jdbc.IngresDriver --connect jdbc:ingres://172.16.63.157:VW7/amit --username ingres -password ingres --表 vector_table --hive-table=vector_table --hive-import --create-hive-table -m 1

我收到错误:12/06/07 22:08:27 错误 sqoop.Sqoop:运行 Sqoop 时出现异常:java.lang.RuntimeException:无法加载数据库驱动程序类:com.ingres.jdbc.IngresDriver java。 lang.RuntimeException:无法加载 db 驱动程序类:com.cloudera.sqoop.manager.SqlManager.makeConnection(SqlManager.java:635) 上 com.cloudera.sqoop.manager.GenericJdbcManager.getConnection 的 com.ingres.jdbc.IngresDriver( GenericJdbcManager.java:53) 在 com.cloudera.sqoop.manager.SqlManager.execute(SqlManager.java:524) 在 com.cloudera.sqoop.manager.SqlManager.execute(SqlManager.java:547) 在 com.cloudera.sqoop .manager.SqlManager.getColumnTypesForRawQuery(SqlManager.java:191) 在 com.cloudera.sqoop.manager.SqlManager.getColumnTypes(SqlManager.java:175) 在 com.cloudera.sqoop.manager.ConnManager.getColumnTypes(ConnManager.java:263) 在 com.cloudera.sqoop.orm.ClassWriter.getColumnTypes(ClassWriter.java:1226) 在 com.cloudera.sqoop.orm.ClassWriter.generate(ClassWriter.java:1051) 在 com.cloudera.sqoop.tool.CodeGenTool .generateORM(CodeGenTool.java:84) 在 com.cloudera.sqoop.tool.ImportTool.importTable(ImportTool.java:370) 在 com.cloudera.sqoop.tool.ImportTool.run(ImportTool.java:456) 在 com。 cloudera.sqoop.Sqoop.run(Sqoop.java:146) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) at com.cloudera.sqoop.Sqoop.runSqoop(Sqoop.java:182)在 com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:221) 在 com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:230) 在 com.cloudera.sqoop.Sqoop.main(Sqoop.java:239 )1051) 在 com.cloudera.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:84) 在 com.cloudera.sqoop.tool.ImportTool.importTable(ImportTool.java:370) 在 com.cloudera.sqoop.tool.ImportTool .run(ImportTool.java:456) 在 com.cloudera.sqoop.Sqoop.run(Sqoop.java:146) 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 在 com.cloudera。 sqoop.Sqoop.runSqoop(Sqoop.java:182) 在 com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:221) 在 com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:230) 在 com.cloudera .sqoop.Sqoop.main(Sqoop.java:239)1051) 在 com.cloudera.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:84) 在 com.cloudera.sqoop.tool.ImportTool.importTable(ImportTool.java:370) 在 com.cloudera.sqoop.tool.ImportTool .run(ImportTool.java:456) 在 com.cloudera.sqoop.Sqoop.run(Sqoop.java:146) 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 在 com.cloudera。 sqoop.Sqoop.runSqoop(Sqoop.java:182) 在 com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:221) 在 com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:230) 在 com.cloudera .sqoop.Sqoop.main(Sqoop.java:239)hadoop.util.ToolRunner.run(ToolRunner.java:65) at com.cloudera.sqoop.Sqoop.runSqoop(Sqoop.java:182) at com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:221) at com .cloudera.sqoop.Sqoop.runTool(Sqoop.java:230) 在 com.cloudera.sqoop.Sqoop.main(Sqoop.java:239)hadoop.util.ToolRunner.run(ToolRunner.java:65) at com.cloudera.sqoop.Sqoop.runSqoop(Sqoop.java:182) at com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:221) at com .cloudera.sqoop.Sqoop.runTool(Sqoop.java:230) 在 com.cloudera.sqoop.Sqoop.main(Sqoop.java:239)

如果有人可以在这里帮助我,我将不胜感激。

提前致谢!:)

4

2 回答 2

0

好的,我得到它的工作。这是一个简单的权限问题。我将 iijdbc.jar 的所有者更改为 hdfs。

sudo chown hdfs /usr/lib/sqoop/lib/iijdbc.jar

现在它正在工作!:)

我现在可以使用 Sqoop 将我的 Vectorwise 表导入 Hive。伟大的!

于 2012-06-08T06:37:38.010 回答
0

我还不能发表评论,所以作为答案:

这是来自文档的引用:

您可以将 Sqoop 与任何其他 JDBC 兼容的数据库一起使用。首先,为您要导入的数据库类型下载适当的 JDBC 驱动程序,并将 .jar 文件安装在客户端计算机上的 $SQOOP_HOME/lib 目录中。(如果您从 RPM 或 Debian 软件包安装,这将是 /usr/lib/sqoop/lib。)每个驱动程序 .jar 文件还有一个特定的驱动程序类,它定义了驱动程序的入口点。例如,MySQL 的 Connector/J 库有一个驱动程序类 com.mysql.jdbc.Driver。请参阅您的数据库供应商特定文档以确定主要驱动程序类。此类必须通过 --driver 作为参数提供给 Sqoop。

Sqoop 可以访问的目录中是否有正确的 jar 文件?

对于未来,如果您提供有关您的环境的更多信息(例如您使用的 Sqoop 版本等),它也总是有用的。

于 2012-06-07T12:18:24.937 回答