irpas技术客

ERROR tool.ImportTool: Import failed: java.io.IOException: Hive exited with stat

网络投稿 6695

sqoop的 迁移数据到hive的报错

常见原因:

原因1:

未将hive中的hive-common-*.jar , hive-exec-*.jar(*为你的hive下的文件号)以及mysql-connect-java-*.jar(*为你mysql对应版本的对应的文件号)拷贝至sqoop安装目录下的lib文件中

解决方法:将hive安装目录下的lib文件中的hive-common-*.jar 和hive-exec-*.jar拷贝至sqoop安装目录下的lib文件下,之后将对应版本的mysql-connect-java-*.jar下载移动至sqoop安装目录下的lib文件下

mysql-connect-java对应表(资料来源于官网MySQL :: MySQL Connector/J 5.1 Developer Guide :: 2 Connector/J Versions, and the MySQL and Java Versions They Require):

Connector/J versionJDBC versionMySQL Server versionJRE RequiredJDK Required for CompilationStatus5.13.0, 4.0, 4.1, 4.25.61, 5.71, 8.01JRE 5 or higher1JDK 5.0 AND JDK 8.0 or higher2, 3General availability8.04.25.6, 5.7, 8.0JRE 8 or higherJDK 8.0 or higher2General availability. Recommended version.

原因2:

libthrift jar 包不兼容的原因(hbase与hive中的libthrift 版本不同)

解决方法一:查看hbase和hive安装目录下的lib目录中的libthrift版本是否一致,不一致可任选其一改为一致,之后将libthrift *.jar复制到sqoop安装目录下的lib文件夹中

解决方法二:将Sqoop配置文件中的 HBASE_HOME 设置为空,让Sqoop不能加载hbase版本的libthrift(不建议使用)

疑难杂症:

情况一:mysql表的编码格式与hive表中的编码格式不同(未尝试可能不准,视情况使用)

首先:hive的元数据是由mysql管理的,mysql默认编码是latin1

但是,因为MySQL通过my.cnf一般情况下设置为utf-8编码,所以需要将库改为latin1

alter database 数据库名 character set utf8;

如果数据库中有中文字体,为了保存那些utf8的中文(防止乱码),要将mysql中存储注释的那几个字段的字符集单独修改为utf8。

情况二(*):第三方连接工具(mobaxterm)问题:这是我遇到的最无语的问题了,直接上图

首先在第三方连接工具中是报此错的:

回到VM虚拟机执行导出导入命令,是成功的,啥操作都不做再回到mobaxterm执行

任然报此错了。。。。。。。

?

可见mobaxterm(其他第三方连接工具未使用过不知是否也有类似情况)执行此命令是有问题的,所有如果你也是用第三方连接工具进行操作,在配置没问题下报错找不出原因的话,建议直接进linux系统操作。

?


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #error #toolImportTool #import #failed #hive #exited #with