踩坑——Sqoop报错ERROR tool.ExportTool: Error during export
【踩坑——Sqoop报错ERROR tool.ExportTool: Error during export】@羲凡——只为了更好的活着
踩坑——Sqoop报错ERROR tool.ExportTool: Error during export 控制台打印的报错是
19/04/19 20:17:09 ERROR mapreduce.ExportJobBase: Export job failed!
19/04/19 20:17:09 ERROR tool.ExportTool: Error during export:
Export job failed!
at org.apache.sqoop.mapreduce.ExportJobBase.runExport(ExportJobBase.java:445)
at org.apache.sqoop.manager.MySQLManager.upsertTable(MySQLManager.java:145)
at org.apache.sqoop.tool.ExportTool.exportTable(ExportTool.java:73)
at org.apache.sqoop.tool.ExportTool.run(ExportTool.java:99)
at org.apache.sqoop.Sqoop.run(Sqoop.java:147)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:234)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:243)
at org.apache.sqoop.Sqoop.main(Sqoop.java:252)
画龙点睛:遇到这个报错说明你的mysql和hive的字段不对应或者数据格式有出入
解决思路:
第一步:完整的检查mysql和hive表的结构(字段名称和数据类型)是否一致。
第二步:查看数据有没有导入?如果数据没有导入,请在检查第一步操作,可以将mysql和hive中的时间类型都改成string或varchar类型试一下。如果有导入,但是导入的数据不全或者不对。说明肯定是你的数据类型和实际的数据不一致。下面分两种情况。详见以下三步。
第三步:在mysql到hive中,请务必检查你的数据中是否包含hive建表默认的换行符
\n
(LINES TERMINATED BY '\n’)。如果有,则sqoop语句中加上 hive-delims-replacement 或者 hive-drop-import-delims,如下代码#!/bin/bash
/usr/local/package/sqoop-1.4.7.bin/bin/sqoop import \
--connect jdbc:mysql://ip:3306/mysql_DB \
--username root \
--password 1q2w3e4r \
--table mysql_Table \
--delete-target-dir \
--hive-delims-replacement , \
--hive-import \
--hive-overwrite \
--hive-database hive_DB \
--hive-table hive_Table \
--hive-partition-key ymday \
--hive-partition-value 20190419 \
--fields-terminated-by '\t' \
-m 1
第四步:在mysql到hive中,请务必检查你的数据中是否包含hive建表常用的字段分隔符
\t
(FIELDS TERMINATED BY '\t’)。如果有,则sqoop语句中 fields-terminated-by 参数不能用 \t,代码如下图文章图片
第五步:在hive到hive中,如果有很多空列,有时也会报如上错误,则sqoop语句中加上 input-null-string 和 input-null-non-string,如下代码
切记^A,在linux的vi中用Ctrl+v 和Ctrl+a 生成,不能直接拷贝下面的^A
切记^A,在linux的vi中用Ctrl+v 和Ctrl+a 生成,不能直接拷贝下面的^A
切记^A,在linux的vi中用Ctrl+v 和Ctrl+a 生成,不能直接拷贝下面的^A
#!/bin/bash
/usr/local/package/sqoop-1.4.7.bin/bin/sqoop export \
--connect "jdbc:mysql://ip:3306/report_db?useUnicode=true&characterEncoding=utf-8" \
--username root \
--password 1q2w3e4r \
--table mysql_table \
--columns name,age \
--update-key name \
--update-mode allowinsert \
--input-null-string '\\N' \
--input-null-non-string '\\N' \
--export-dir "/hive/warehouse/dw_db.db/hive_table/ymday=20190419/*" \
--input-fields-terminated-by '^A' \
-m 1
====================================================================
@羲凡——只为了更好的活着
若对博客中有任何问题,欢迎留言交流
推荐阅读
- 急于表达——往往欲速则不达
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 2019-02-13——今天谈梦想()
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- Ⅴ爱阅读,亲子互动——打卡第178天
- 低头思故乡——只是因为睡不着
- 取名——兰
- 每日一话(49)——一位清华教授在朋友圈给大学生的9条建议
- 广角叙述|广角叙述 展众生群像——试析鲁迅《示众》的展示艺术