环境: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;
解决
因版本不一致导致
将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/
网友评论