美文网首页
Sqoop导出至Mysql遇到的问题

Sqoop导出至Mysql遇到的问题

作者: ryancao_b9b9 | 来源:发表于2020-04-05 20:59 被阅读0次

一、软件版本
mysql:5.7
sqoop:1.4.6-cdh5.7.0

二、数据需求
需要将hdfs上的accounts文件夹(/loudacre/accounts)数据导入到mysql数据库loudacre中的accouts数据表
accounts文件夹截图如下:


/loudacre/accounts.png

accounts表结构


accounts表结构.png

三、解决过程
1、执行脚本

sqoop export \
--connect jdbc:mysql://192.168.1.101:3306/loudacre \
--username ****** \
--password ****** \
--table accounts \
--export-dir /loudacre/accounts \
--fields-terminated-by ',' \
--m 1 

2、报错内容

2019-10-28 22:56:36,185 ERROR [main] org.apache.sqoop.mapreduce.TextExportMapper: Exception: 
java.lang.RuntimeException: Can't parse input data: '\N'
    at accounts_backup.__loadFromFields(accounts_backup.java:691)
    at accounts_backup.parse(accounts_backup.java:584)
    at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:89)
    at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:39)
    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)

3、问题解决过程
a:查看原始文件内容

1,2008-10-23 16:05:05.0,\N,Donald,Becton,2275 Washburn Street,Oakland,CA,94660,5100032418,2014-03-18 13:29:47.0,2014-03-18 13:29:47.0
2,2008-11-12 03:00:01.0,\N,Donna,Jones,3885 Elliott Street,San Francisco,CA,94171,4150835799,2014-03-18 13:29:47.0,2014-03-18 13:29:47.0
3,2008-12-21 09:19:50.0,\N,Dorthy,Chalmers,4073 Whaley Lane,San Mateo,CA,94479,6506877757,2014-03-18 13:29:47.0,2014-03-18 13:29:47.0
4,2008-11-28 00:08:09.0,\N,Leila,Spencer,1447 Ross Street,San Mateo,CA,94444,6503198619,2014-03-18 13:29:47.0,2014-03-18 13:29:47.0
5,2008-11-15 23:06:06.0,\N,Anita,Laughlin,2767 Hill Street,Richmond,CA,94872,5107754354,2014-03-18 13:29:47.0,2014-03-18 13:29:47.0

b:分析过程
(1)文本数据有空字段'\N',
(2)调整脚本

sqoop export \
--connect jdbc:mysql://192.168.1.101:3306/loudacre \
--username ****** \
--password ****** \
--table accounts \
--export-dir /loudacre/accounts \
--input-null-non-string ‘\\N’ \
--fields-terminated-by ',' \
--m 1 

(3)报错依然存在
(4)继续调整脚本

sqoop export \
--connect jdbc:mysql://192.168.1.101:3306/loudacre \
--username root \
--password 123456 \
--table accounts_backup \
--export-dir /loudacre/accounts \
--input-null-string "\\\\N" \
--input-null-non-string "\\\\N" \
--fields-terminated-by ',' \
--m 1 \

(5)导入成功
共导入129,761条记录


部分记录截图.png

四、参考资料
1、http://www.itkeyword.com/doc/77196095554496x732/sqoop-export-is-failing-when-i-have-n-as-data

相关文章

网友评论

      本文标题:Sqoop导出至Mysql遇到的问题

      本文链接:https://www.haomeiwen.com/subject/mqypphtx.html