分享

Sqoop导出Hive数据到Mysql错误java.util.NoSuchElementException解决办法

NIITYZU 发表于 2015-4-21 20:22:06 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 29057
本帖最后由 NIITYZU 于 2015-4-21 20:22 编辑

在使用Sqoop将Hive表中数据导出到MySQL数据库中的时候,使用以下命令会报一个错误
  1. sqoop-export --connect jdbc:mysql://secondmgt:3306/transport --username hive --password hive --table jtxx --export-dir /hive/warehouse/hive.db/temptrans
复制代码
错误信息如下:
  1. 15/04/21 19:38:52 INFO mapreduce.Job: Task Id : attempt_1428394594787_0010_m_000001_0, Status : FAILED
  2. Error: java.io.IOException: Can't export data, please check task tracker logs
  3.         at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:112)
  4.         at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:39)
  5.         at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
  6.         at org.apache.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:64)
  7.         at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:763)
  8.         at org.apache.hadoop.mapred.MapTask.run(MapTask.java:339)
  9.         at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:162)
  10.         at java.security.AccessController.doPrivileged(Native Method)
  11.         at javax.security.auth.Subject.doAs(Subject.java:415)
  12.         at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)
  13.         at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:157)
  14. Caused by: java.util.NoSuchElementException
  15.         at java.util.ArrayList$Itr.next(ArrayList.java:834)
  16.         at jtxx.__loadFromFields(jtxx.java:387)
  17.         at jtxx.parse(jtxx.java:336)
  18.         at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:83)
  19.         ... 10 more
复制代码
解决办法:
       这个错误的原因是指定Hive中表字段之间使用的分隔符错误,供Sqoop读取解析不正确。如果是由hive执行mapreduce操作汇总的结果,默认的分隔符是 '\001',否则如果是从HDFS文件导入的则分隔符则应该是'\t'。此处我是hive执行mapreduce分析汇总的结果,所以默认的分隔是'\001'。Sqoop命令修改如下,指定分隔符:
  1. sqoop-export --connect jdbc:mysql://secondmgt:3306/transport --username hive --password hive --table jtxx --export-dir /hive/warehouse/hive.db/temptrans --input-fields-terminated-by '\001'
复制代码


已有(1)人评论

跳转到指定楼层
langke93 发表于 2015-4-21 20:55:42
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条