【问题标题】:Sqoop import from db2 SQLException in nextKeyValue在 nextKeyValue 中从 db2 SQLException 导入 Sqoop
【发布时间】:2017-10-05 05:16:49
【问题描述】:

我正在尝试从 db2 服务器执行 sqoop 导入。 我的 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"

当我运行此查询时,我收到以下错误

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)

你能帮我解决这个问题吗?

【问题讨论】:

    标签: hadoop db2 sqoop


    【解决方案1】:

    这是旧 Db2 jdbc 驱动程序版本中的一个已知错误。

    您正在为 Db2 使用非常旧的(并且不受支持)JDBC 3.0 驱动程序。您的版本是 V9.5 fixpack 0(驱动程序标识为 3.50.152)。

    建议您升级到当前支持的 Db2 jdbc 4.0 驱动程序,例如随 Db2 版本 11.1 提供的驱动程序,您可以在注册后从 IBM 修复中心网站下载适用于您平台的这些驱动程序,或询问您的 Db2 DBA 或现场支持人员为您正确升级驱动程序。

    根据您的配置,有时可以通过在客户端更改 java 策略文件以授予对 sun.io 包的访问权限来解决此问题。但总的来说,如果您将当前受支持的 jdbc 4.0 驱动程序与 Db2 一起使用,尤其是在您使用当前客户端工具集版本的情况下,您会遇到更少的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多