美文网首页
用sqoop从MySQL导出数据到hive错误汇总

用sqoop从MySQL导出数据到hive错误汇总

作者: 顺风飘千里 | 来源:发表于2021-07-21 20:07 被阅读0次

环境:jdk1.8_291,hadoop2.7.6,hive2.3.7,sqoop1.4.7,mysql5.7.33

前言

Sqoop现状

已经停止维护 分为SQOOP 1 和SQOOP 2  建议使用sqoop 1.4.7
停止维护原因分析
1.足够的成熟
2.基于MapReduce太老了,替换方案datax canel

其实用sqoop到数据到hive中的大部分错误都是因为hive的版本太高所致最好的sqoop运行环境是Hadoop 2.7+ Hive 1.2.1 +HBase 1.x +sqoop 1.4.7

运行前准备
运行以下几个命令
cp $HIVE_HOME/lib/hive-common-2.3.7.jar $SQOOP_HOME/lib/
cp $HIVE_HOME/lib/libfb303-0.9.3.jar $SQOOP_HOME/lib/
cp $HIVE_HOME/conf/hive-site.xml $SQOOP_HOME/conf/
将hive有关几个jar包和配置放入sqoop下能避免很多错误

1. 错误main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")

解决
java 的安全策略问题:找到jre包, /Java/jre/lib/security 包下面的 java.policy 文件,编辑他,加上如下 代码

permission javax.management.MBeanTrustPermission "register";

2. 错误ERROR exec.DDLTask: java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectMapper.readerFor(Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/ObjectReader;

解决
因版本不一致导致
SQOOP_HOME/lib/jackson*.jar 文件backup,再把HIVE_HOME/lib/jackson*.jar 拷贝至 $SQOOP_HOME/lib 目录中。

mv $SQOOP_HOME/lib/jackson-annotations-2.3.1.jar $SQOOP_HOME/lib/jackson-annotations-2.3.1.jar.backup

mv $SQOOP_HOME/lib/jackson-core-2.3.1.jar $SQOOP_HOME/lib/jackson-core-2.3.1.jar.backup

mv $SQOOP_HOME/lib/jackson-core-asl-1.9.13.jar $SQOOP_HOME/lib/jackson-core-asl-1.9.13.jar.backup

mv $SQOOP_HOME/lib/jackson-databind-2.3.1.jar $SQOOP_HOME/lib/jackson-databind-2.3.1.jar.backup

mv $SQOOP_HOME/lib/jackson-mapper-asl-1.9.13.jar $SQOOP_HOME/lib/jackson-mapper-asl-1.9.13.jar.backup


cp $HIVE_HOME/lib/jackson-annotations-2.6.0.jar $SQOOP_HOME/lib/
cp $HIVE_HOME/lib/jackson-core-2.6.5.jar $SQOOP_HOME/lib/
cp $HIVE_HOME/lib/jackson-databind-2.6.5.jar $SQOOP_HOME/lib/
cp $HIVE_HOME/lib/jackson-dataformat-smile-2.4.6.jar $SQOOP_HOME/lib/
cp $HIVE_HOME/lib/jackson-datatype-guava-2.4.6.jar $SQOOP_HOME/lib/
cp $HIVE_HOME/lib/jackson-datatype-joda-2.4.6.jar $SQOOP_HOME/lib/
cp $HIVE_HOME/lib/jackson-jaxrs-1.9.13.jar $SQOOP_HOME/lib/
cp $HIVE_HOME/lib/jackson-jaxrs-base-2.4.6.jar $SQOOP_HOME/lib/
cp $HIVE_HOME/lib/jackson-jaxrs-json-provider-2.4.6.jar $SQOOP_HOME/lib/
cp $HIVE_HOME/lib/jackson-jaxrs-smile-provider-2.4.6.jar $SQOOP_HOME/lib/
cp $HIVE_HOME/lib/jackson-module-jaxb-annotations-2.4.6.jar $SQOOP_HOME/lib/
cp $HIVE_HOME/lib/jackson-xc-1.9.13.jar $SQOOP_HOME/lib/

3.错误ERROR tool.ImportTool: Import failed: java.io.IOException: Hive CliDriver exited with status=1

解决
libthrift jar 包不兼容的原因
找到hive中lib文件夹,将文件夹中的libthrift-0.9.2.jar 拷贝到sqoop路径下的lib文件夹下面

cp $HIVE_HOME/lib/libthrift-0.9.3.jar $SQOOP_HOME/lib/

相关文章

网友评论

      本文标题:用sqoop从MySQL导出数据到hive错误汇总

      本文链接:https://www.haomeiwen.com/subject/kmgjmltx.html