美文网首页
用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