简体   繁体   English

从nextKeyValue中的db2 SQLException导入Sqoop

[英]Sqoop import from db2 SQLException in nextKeyValue

I'm trying to do a sqoop import from a db2 server. 我正在尝试从db2服务器导入sqoop。 My sqoop import is as below 我的sqoop导入如下

sqoop import --fields-terminated-by '\001' --direct --connection-manager com.cloudera.sqoop.manager.Db2Manager --connect jdbc:db2://***.***.***:***/*** --username **** --password *** --query "select * FROM ZA1.RSR WHERE \$CONDITIONS"

When I'm running this query i am getting the following error 当我运行此查询时,出现以下错误

Error: java.io.IOException: SQLException in nextKeyValue
    at org.apache.sqoop.mapreduce.db.DBRecordReader.nextKeyValue(DBRecordReader.java:277)
    at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask.java:556)
    at org.apache.hadoop.mapreduce.task.MapContextImpl.nextKeyValue(MapContextImpl.java:80)
    at org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context.nextKeyValue(WrappedMapper.java:91)
    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)
    at org.apache.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:64)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1714)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
  Caused by: com.ibm.db2.jcc.b.SqlException: [jcc][t4][10199][10462][3.50.152] Required character converter is not available. ERRORCODE=-4220, SQLSTATE=null
    at com.ibm.db2.jcc.b.wc.a(wc.java:55)
    at com.ibm.db2.jcc.b.wc.a(wc.java:119)
    at com.ibm.db2.jcc.b.bc.a(bc.java:1758)
    at com.ibm.db2.jcc.b.bc.n(bc.java:496)
    at com.ibm.db2.jcc.b.bc.F(bc.java:1263)
    at com.ibm.db2.jcc.b.jk.d(jk.java:939)
    at com.ibm.db2.jcc.b.jk.getString(jk.java:917)
    at org.apache.sqoop.lib.JdbcWritableBridge.readString(JdbcWritableBridge.java:71)
    at com.cloudera.sqoop.lib.JdbcWritableBridge.readString(JdbcWritableBridge.java:61)
    at QueryResult.readFields(QueryResult.java:356)
    at org.apache.sqoop.mapreduce.db.DBRecordReader.nextKeyValue(DBRecordReader.java:244)

Could you please help me out with this. 你能帮我这个忙吗?

This was a known fault in old Db2 jdbc driver versions. 这是旧的Db2 jdbc驱动程序版本中的一个已知错误。

You are using a very old (and out of support) JDBC 3.0 driver for Db2. 您正在使用非常老旧的Db2(且不支持)JDBC 3.0驱动程序。 Your version is V9.5 fixpack 0 (driver identifies as 3.50.152). 您的版本是V9.5修订包0(驱动程序标识为3.50.152)。

Suggest you upgrade to a currently supported Db2 jdbc 4.0 driver, such as those supplied with Db2 Version 11.1, you can download these drivers for your platform from IBM fix central website after registering, or ask your Db2 DBA or onsite support person to upgrade the driver correctly for you. 建议您升级到当前支持的Db2 jdbc 4.0驱动程序,例如Db2版本11.1随附的驱动程序,您可以在注册后从IBM Fix Central网站为您的平台下载这些驱动程序,或者要求您的Db2 DBA或现场支持人员升级驱动程序为您正确。

Depending on your configuration, sometimes its possible to workaround this via java policy file changes on the client side to grant access to the sun.io package. 根据您的配置,有时可以通过更改客户端上的Java策略文件来解决此问题,以授予对sun.io软件包的访问权限。 But in general you will have fewer issues if you use a currently supported jdbc 4.0 driver with Db2 especially if you are using current client toolset versions. 但是通常,如果您将当前支持的jdbc 4.0驱动程序与Db2一起使用,则问题会更少,尤其是在使用当前客户端工具集版本的情况下。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM