【发布时间】:2020-04-15 19:48:24
【问题描述】:
我正在尝试使用 sqoop 将数据从 DB2 导入 hdfs。由于我没有将 db2jcc4.jar 复制到 /var/lib/sqoop/ 目录的管理员权限,因此我将 jar 复制到了我正在执行的位置,并使用 --libjars 选项指定了该 jar。
sqoop import \
--libjars db2jcc4.jar \
--driver com.ibm.db2.jcc.DB2Driver \
--connect 'jdbc:db2://<hostname>:50000/<dbname>' \
--username <username> \
--password <password> \
--table <tablename> \
--target-dir /hdfs path
我收到如下错误:
20/04/15 15:16:59 ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: Could not load db driver class: com.ibm.db2.jcc.DB2Driver
java.lang.RuntimeException: Could not load db driver class: com.ibm.db2.jcc.DB2Driver
at org.apache.sqoop.manager.SqlManager.makeConnection(SqlManager.java:875)
at org.apache.sqoop.manager.GenericJdbcManager.getConnection(GenericJdbcManager.java:52)
at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:763)
at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:786)
at org.apache.sqoop.manager.SqlManager.getColumnInfoForRawQuery(SqlManager.java:289)
at org.apache.sqoop.manager.SqlManager.getColumnTypesForRawQuery(SqlManager.java:260)
at org.apache.sqoop.manager.SqlManager.getColumnTypes(SqlManager.java:246)
at org.apache.sqoop.manager.ConnManager.getColumnTypes(ConnManager.java:327)
at org.apache.sqoop.orm.ClassWriter.getColumnTypes(ClassWriter.java:1858)
at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1657)
at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:106)
at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:494)
at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:621)
at org.apache.sqoop.Sqoop.run(Sqoop.java:147)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:234)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:243)
at org.apache.sqoop.Sqoop.main(Sqoop.java:252)
谁能帮我解决这个问题
【问题讨论】:
-
JDBC 客户端 jar 需要放在 $SQOOP_HOME/lib 中。我们可以在任何自定义位置下指定 jar 并运行吗?
标签: db2 sqoop hadoop2 data-ingestion