ERROR tool.ImportTool: Import failed: java.io.IOException: Hive exited with status 1
sqoop迁移数据到hive报错
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 version | JDBC version | MySQL Server version | JRE Required | JDK Required for Compilation | Status |
---|---|---|---|---|---|
5.1 | 3.0, 4.0, 4.1, 4.2 | 5.61, 5.71, 8.01 | JRE 5 or higher1 | JDK 5.0 AND JDK 8.0 or higher2, 3 | General availability |
8.0 | 4.2 | 5.6, 5.7, 8.0 | JRE 8 or higher | JDK 8.0 or higher2 | General 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系统操作。
更多推荐
所有评论(0)