teradata连接器失败,出现越界异常

u5rb5r59  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(265)

我正在尝试使用teradata连接器(tdch)从hadoop集群推送到teradata。整个过程包括将前一天的数据(基于分区)从配置单元表复制到配置单元外部表,以csv形式存储在hdfs中,然后将其推送到teradata。分区不发送给teradata,只用于确定推送什么。所有这些都是由shell脚本触发的。
它成功写入csv,但在使用java.lang.arrayindexoutofboundsexception的teradata推送上失败:44。两个表都有44列,因此不应该有44的索引。在控制台中,processor.teradabatchinsertprocessor打印出“create output stage table”的sql,其中包含一个附加列“tdch\u bi\u taskid”varchar(40)not case specific null)no primary index。
我可能认为我的列在表之间匹配有问题,但奇怪的是,当只推少量行时(例如3行而不是一整天的150万行),推送工作正常,并且在stage表中也创建了额外的列“tdch\u bi\u taskid”,所以这似乎不是越界异常的原因。
错误:

Error: java.lang.ArrayIndexOutOfBoundsException: 44
        at com.teradata.connector.hdfs.serde.HdfsTextSerDe.deserialize(HdfsTextSerDe.java:298)
        at com.teradata.connector.common.ConnectorCombineInputFormat$ConnectorCombineFileRecordReader.getCurrentValue(ConnectorCombineInputFormat.java:402)
        at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.getCurrentValue(MapTask.java:535)
        at org.apache.hadoop.mapreduce.task.MapContextImpl.getCurrentValue(MapContextImpl.java:75)
        at org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context.getCurrentValue(WrappedMapper.java:86)
        at com.teradata.connector.common.ConnectorMMapper.run(ConnectorMMapper.java:122)
        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:170)
        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:1869)
        at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:164)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题