NIITYZU 发表于 2015-4-21 20:22:06

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

本帖最后由 NIITYZU 于 2015-4-21 20:22 编辑

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

langke93 发表于 2015-4-21 20:55:42

分隔符的问题。
楼主也是个细心人{:soso_e179:}
学习了
页: [1]
查看完整版本: Sqoop导出Hive数据到Mysql错误java.util.NoSuchElementException解决办法