栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Sqoop导出hive数据到mysql出现错误的解决方案

Sqoop导出hive数据到mysql出现错误的解决方案

问题描述

今天在azkaban上查看定时任务调度时,发现一直运行的一个project竟然神奇的失败了,赶紧去查看,还好,只是最后一步ads_to_mysql出错,不会导致数据丢失,但是,后端报表无法显示正常数据了。

一、尝试手动运行

还是报错,跟自动运行没啥区别,看来不是我忘了同步分发执行脚本。

二、查看报错

Error: java.io.IOException: Can’t export data, please check failed map task logs at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:122) at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:39) at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:146) at org.apache.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:64) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:799) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:347) at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:174) 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:1729) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:168) Caused by: java.lang.RuntimeException: Can’t parse input data: ‘G’ at ads_elec_meter_count.__loadFromFields(ads_elec_meter_count.java:328) at ads_elec_meter_count.parse(ads_elec_meter_count.java:254) at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:89) … 10 more Caused by: java.lang.IllegalArgumentException at java.sql.Date.valueOf(Date.java:143) at ads_elec_meter_count.__loadFromFields(ads_elec_meter_count.java:316) … 12 more

先google一下关键词
Error: java.io.IOException: Can’t export data
Can’t parse input data: ‘G’ at ads_elec_meter_count.__loadFromFields
出来的全是说我关键字写错了。。那我之前那么久怎么一点问题都没有,那好,我改!

-- ROW FORMAT DELIMITED FIELDS TERMINATED BY 't'
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '@'

修改分隔符
sqoop脚本对应位置也要更改

--input-fields-terminated-by "@" 

然并卵,测试还是报那个错误!

三、灵感来了

这时我发现
报错还有这一句,by: java.lang.IllegalArgumentException at java.sql.Date.valueOf(Date.java:143) at ,结合java.lang.RuntimeException: Can’t parse input data: ‘G’ at
咋这么像格式问题
我的首字段是dt是日期,不会是格式转换问题吧,我把mysql中dt改为varchar(255),执行成功!
excuse me?我原来运行地好好的,怎么sqoop突然给我改了字段排序!

四、固定字段排序

找到原因,那就解决它!
在脚本sqoop部分加–columns,指定字段!
测试成功,修改生产脚本!测试收工!

总结

任何问题多想想,总会发现解决之道!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/601521.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号