通过SQOOP连接到DB2时出现连接管理器错误

时间:2018-01-25 13:22:08

标签: hadoop jdbc db2 sqoop

下面是列出DB2 ::

数据库的sqoop命令
sqoop list-databases --connect  'jdbc:db2://DB_IP:PORT/' --username xxx --password xxx --driver com.ibm.db2.jcc.DB2Driver

但我得到以下错误::

WARN sqoop.ConnFactory: Parameter --driver is set to an explicit driver however appropriate connection manager is not being set (via --connection-manager). Sqoop is going to fall back to org.apache.sqoop.manager.GenericJdbcManager. Please specify explicitly which connection manager should be used next time.

什么是DB2的--connection-manager?

更改了sqoop语法

sqoop import -libjars <path to>/db2jcc4.jar --connect 'jdbc:db2://DB_IP:PORT/' --username xxx -password xxx -m 1 --table db2_DB_name.db2_tbl_name --hive-overwrite --hive-import --hive-database amitesh_db --hive-table amitesh_db2test --target-dir <path_to>/db2test --as-parquetfile

以下是我收到的错误::

 ERROR manager.SqlManager: Error executing statement: com.ibm.db2.jcc.am.SqlSyntaxErrorException: [jcc][10165][10047][x.xx.xx] Invalid database URL syntax: jdbc:db2://<db_ip>:<port>/. ERRORCODE=-4461, SQLSTATE=42815
com.ibm.db2.jcc.am.SqlSyntaxErrorException: [jcc][10165][10047][4.17.28] Invalid database URL syntax: jdbc:db2://<db_ip>:<port>/. ERRORCODE=-4461, SQLSTATE=42815

1 个答案:

答案 0 :(得分:1)

问题在于JDBC JARS,对于DB2,您必须将jar添加到/ var / lib / sqoop并提供适当的权限。您显示的日志/错误快照不是错误,它只是一个警告。

请按照以下步骤添加jar并参考sqoop示例以构建您的sqoop代码/命令。

1&gt;&gt;&gt; here或您可以找到的地方下载db2jcc.jar和db2jcc_license_cisuz.jar。

2&gt;&gt;&gt; 将两个罐子推送到群集中的/ var / lib / sqoop(数据节点和边缘节点),sqoop应该具有对jar的读取和执行访问权限。< / p>

下面是您可以使用的sqoop示例,利用以下代码的libjars部分。

sqoop import -libjars /var/lib/sqoop/db2jcc.jar,/var/lib/sqoop/db2jcc_license_cisuz.jar --connect 'jdbc:db2://<HOST>:<PORT>/<DATABASE_NAME>' --username xxxxxx -password xxxxx -m 1 --table ${DB2Schema}.${DB@Table} --hive-overwrite --hive-import --hive-database ${HIVE_DATABASE} --hive-table ${HIVE_TABLE} --target-dir ${HDFS_DIR} --as-parquetfile

请注意,sqoop不支持DB2数据库中的列表数据库。结帐官方sqoop doc

注意:来自sqoop文档

  

这仅适用于HSQLDB,MySQL和Oracle。使用时   Oracle,连接数据库的用户必须具备   DBA特权。