[已解决]ERROR tool.ExportTool: Error during export: Export job failed!

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: [已解决]ERROR tool.ExportTool: Error during export: Export job failed!

ERROR tool.ExportTool: Error during export: Export job failed!

问题

sqoop导出数据的时候遇到问题,ERROR tool.ExportTool: Error during export: Export job failed

思路

sqoop的shell命令是这样的

sqoop export
–connect jdbc:mysql://cdh00:3306/airquality
–username root
–password root
–table co
–export-dir hdfs://cdh01:8020/user/hive/warehouse/co
–input-fields-terminated-by ‘\001’ \

这里的错误就是经典的hive和mysql的表结构不对应,有可能你的实际情况和我不一样,但是按照这个思路去检查会很轻松找到你的问题根源。

这个问题是sqoop把你的数据往mysql中塞的时候格式不符,他就会返回这个错误。处理方式首先就应该检查两个表结构是否一致。

hive表结构查询

desc [表名];

在检查后我发现两个表结构是完全一致的,也有可能是hive的分隔符弄错了(–input-fields-terminated-by ‘\001’),检查后也没有问题,hive中确实使用默认的’\001’作为分隔符,那为什么会报错嘞?

除了hive表结构之外,我们再检查一下hive的数据,在hdfs/user/hive/warehouse/co中,可以在linux中hadoop fs -cat /user/hive/warehouse/co查看,为了方便我这里选择在windows中下载查看。

数据节选

201501122002A\N2.105

//我的数据除了前两条是string,后面都是double类型。

可以看到分隔符确实是"\001",但是double数据中有一个突兀的"\N"。原来是因为hive中的null值默认是按照字符串"\N"存储的,所以在获取数据时出现字符串"\N",而"\N"是字符串格式不符合double类型导致报错。

这里有两种处理方法,一种是将表结构统一改成varchar类型,但是这样"\N"就按照字符串存入了,不方便处理。所以加上两条参数–input-null-string和–input-null-non-string,在sqoop遇到"\N"后按照null进行插入处理。

修改后的sqoop命令

sqoop export
–connect jdbc:mysql://cdh00:3306/airquality
–username root
–password root
–table co
–export-dir hdfs://cdh01:8020/user/hive/warehouse/co
–input-fields-terminated-by ‘\001’
–input-null-string ‘\N’
–input-null-non-string ‘\N’

方案

网上的思路是对的,我检查表结构,发现一致,就只有字段长度问题了,全部扩充至255后,成功运行!


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
iOS开发
解决App Installation failed, No code signature found.
解决App Installation failed, No code signature found.
380 0
|
4月前
|
Python
解决安装ConcurrentLogHandler报错error in ConcurrentLogHandler setup command: use_2to3 is invalid.
本文介绍了在Python环境下安装ConcurrentLogHandler时遇到的"use_2to3 is invalid"错误的解决方法,主要是通过降级setuptools到57.5.0版本来解决该问题。
179 2
Failed to execute script ‘xxx‘ due to unhandled exception:No module named ‘ctypes‘
Failed to execute script ‘xxx‘ due to unhandled exception:No module named ‘ctypes‘
443 0
|
前端开发
【前端异常】Module build failed: Error: ENOENT: no such file or directory, scandir ‘G:\OPWeb\public\node_m
【前端异常】Module build failed: Error: ENOENT: no such file or directory, scandir ‘G:\OPWeb\public\node_m
240 0
|
7月前
|
缓存 IDE Linux
Internal error. Please report to https://jb.gg/ide/critical-startup-errors
Internal error. Please report to https://jb.gg/ide/critical-startup-errors
139 0
|
分布式计算 Ubuntu Hadoop
MapReduce报错:「MKDirs failed to create file」
MapReduce报错:「MKDirs failed to create file」
335 0
MapReduce报错:「MKDirs failed to create file」
|
Shell
Detected problems with app native libraries (please consult log for detail): lib.so: text relocation
Detected problems with app native libraries (please consult log for detail): lib.so: text relocation
166 0
|
资源调度
yarn start error Command failed with exit code 1解决
yarn start error Command failed with exit code 1解决
1145 0
​Error -4075: File not found. An error occurred merging module <MODULENAME> for feature <FEATURENAME>.
​Error -4075: File not found. An error occurred merging module <MODULENAME> for feature <FEATURENAME>.
123 0
​Error -4075: File not found. An error occurred merging module <MODULENAME> for feature <FEATURENAME>.
打包错误--Error:A problem was found with the configuration of task ':app:packageRelease'.
解决办法: app目录下的build.gradle文件 将 shrinkResources 的值改为 false 或者直接去掉   shrinkResources true  表示 :打包的时候会去删除一些不必要 的文件   ------------------------------------- 问题是以往打包一直没出过这样的问题,根本原因不知。
1602 0