Сбой Teradata Connector для Hadoop с исключением из-за пределов - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь перейти от кластера Hadoop к Teradata, используя Teradata Connector (TDCH). Весь процесс включает в себя копирование данных предыдущего дня (на основе раздела) из таблицы куста во внешнюю таблицу улья, сохраненную в HDFS как CSV-файл, который затем передается в Teradata. Раздел не отправляется в Teradata, а используется только для определения того, что нажать. Все это запускается из сценария оболочки.

Он успешно записывает в csv, но завершается неудачно при отправке Teradata с java.lang.ArrayIndexOutOfBoundsException: 44. Обе таблицы имеют 44 столбца, поэтому не должно быть индекса 44. В консоли процессор.TeradataBatchInsertProcessor выводит на печатьsql для «создания таблицы выходных данных», который включает дополнительный столбец «TDCH_BI_TASKID» VARCHAR (40) NOT CASESPECIFIC NULL) НЕТ ПЕРВИЧНОГО ИНДЕКСА.

Возможно, у меня возникла проблема с совпадением столбцов между таблицами, но странно то, что push работает нормально, когда push только небольшое количество строк (например, 3 вместо 1,5 миллионов или около того за весь день), и дополнительный столбец "TDCH_BI_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)
...