在cloudera中运行sqoop作业时,数组索引超出绑定异常

时间:2016-10-07 20:27:56

标签: mapreduce teradata sqoop hadoop-streaming

我正在运行Sqoop作业以将数据从hdfs传输到Teradata,并且我发现数组超出了异常范围,任何人都可以让我知道可能出现的问题。

下面提到的是我使用的命令

HDFS中的文件名 - > file_name.dat

Sqoop command--> 
sqoop export \
--connect jdbc:teradata://teradarta_server_name/DATABASE=database_name\
--username username\
--password pwd\
--table My_table_name\
--input-fields-terminated-by '|' \
--lines-terminated-by '\n' \
--export-dir /HDFS-path

Teradata版本:15.10

Terdatada tablename包含46列,因此我的文件也是HDFS。

错误:

  

java.lang.ArrayIndexOutOfBoundsException:46 at   com.teradata.connector.hdfs.serde.HdfsTextSerDe.deserialize(HdfsTextSerDe.java:293)   在   com.teradata.connector.common.ConnectorCombineInputFormat $ ConnectorCombineFileRecordReader.getCurrentValue(ConnectorCombineInputFormat.java:397)   在   org.apache.hadoop.mapred.MapTask $ NewTrackingRecordReader.getCurrentValue(MapTask.java:535)   在   org.apache.hadoop.mapreduce.task.MapContextImpl.getCurrentValue(MapContextImpl.java:75)   在   org.apache.hadoop.mapreduce.lib.map.WrappedMapper $ Context.getCurrentValue(WrappedMapper.java:86)   在   com.teradata.connector.common.ConnectorMMapper.run(ConnectorMMapper.java:117)   在org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787)at   org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)at at   org.apache.hadoop.mapred.YarnChild $ 2.run(YarnChild.java:164)at at   java.security.AccessController.doPrivileged(Native Method)at   javax.security.auth.Subject.doAs(Subject.java:415)at   org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1693)   在org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)

1 个答案:

答案 0 :(得分:0)

将您的tera数据连接器jar保存在sqoop类路径中,然后尝试以下。

    sqoop export \
      --connect jdbc:teradata://teradarta_server_name/DATABASE=database_name\
      --connection-manager org.apache.sqoop.teradata.TeradataConnManager \
      --table My_table_name\
      --username username\
      --password pwd\
      --fields-terminated-by '|' \
      --lines-terminated-by '\n' \
      --export-dir /HDFS-path \
      --input-null-string "\\\\N" \
      --input-null-non-string "\\\\N"