sqoop 从hive中导出数据到mysql遇到的错误及解决方法

时间:2024-03-19 09:06:58

以下是sqoop语句:

./sqoop export
–connect jdbc:mysql://localhost:3306/newtext
–username root --password “root”
–table emp
–fields-terminated-by ‘\t’
–export-dir /user/hive/warehouse/bt88.db/emp1
-m 1

以下是错误信息:
19/10/07 17:25:21 INFO mapreduce.Job: map 0% reduce 0%
19/10/07 17:25:22 INFO mapreduce.Job: map 100% reduce 0%
19/10/07 17:25:23 INFO mapreduce.Job: Job job_1570438054928_0007 failed with state FAILED due to: Task failed task_1570438054928_0007_m_000000
Job failed as tasks failed. failedMaps:1 failedReduces:0
19/10/07 17:25:23 INFO mapreduce.Job: Counters: 8

当时看的很懵逼,都map和reduce了,才还报错呢,然后百度说可能是分隔符问题,我就打开看了下我的文件
hadoop fs -cat /user/hive/warehouse/bt88.db/emp1/000000_0
结果是:
7369 SMITH CLERK 7902 1980-12-17 800.0 \N 20
7499 ALLEN SALESMAN 7698 1981-2-20 1600.0 300.0 30
7521 WARD SALESMAN 7698 1981-2-22 1250.0 500.0 30
7566 JONES MANAGER 7839 1981-4-2 2975.0 \N 20
7654 MARTIN SALESMAN 7698 1981-9-28 1250.0 1400.0 30
当时没注意这个里面有些不同寻常的语句,当局者迷,因为我知道有空值,然后这里面是\N,mysql是不能识别的。
一般来说结果肯定没什么效果,附上我查找问题的过程:
1.进入YARN的详情界面
localhost:8088
sqoop 从hive中导出数据到mysql遇到的错误及解决方法
2.点击报错的那个任务,进入任务详情,右下角有个logs,点进去
sqoop 从hive中导出数据到mysql遇到的错误及解决方法
3.然后点击第三个,第一二个你可以点击去看看,也看不出啥
sqoop 从hive中导出数据到mysql遇到的错误及解决方法
4.第四步,这就很关键了,进去了可以发现信息很少,然后要点击here!!!
sqoop 从hive中导出数据到mysql遇到的错误及解决方法
5.这下就可以进去看到报错信息了,我的是:
sqoop 从hive中导出数据到mysql遇到的错误及解决方法
Caused by: java.lang.NumberFormatException: For input string: “\N”
到这里我们可以恍然大悟,嗯,这个有问题!这下就可以再百度查找解决办法,加上这句即可
–input-null-string ‘\N’ --input-null-non-string ‘\N’ \

本文也是从网上找资料然后结合自身实际做的总结,但是资料太多找不到有价值的链接,所以写了原创。