0


Sqoop在mysql和hadoop互导的时候发生报错分析:

环境配置为hadoop3.1.3,hive为3.1.2,sqoop为1.4.7,hbase为2.4.11,mysql8.0.27,hadoop环境搭建是根据尚硅谷学习的,hive和hbase是根据尚硅谷的开发文档进行搭建的环境

本篇主要讲的是我在做学校的期末大作业的时候发生的sqoop从hive导出到mysql的时候发生的报错

1.如果你在导出进程,即mapreduce进程开始之前进行报错退出,那大概是出现了maprduce任务分配问题,解决方法:
    报错内容为:进行MapReduce操作出现错误:
    错误: 找不到或无法加载主类org.apache.hadoop.mapreduce.v2.app.MRAppMaster
    这个是你当时搭建伪分布或者分布式环境的时候发生的报错内容,主要原因还是你的yarn-site.xml和mapread-site.xml文件没有进行相应的配置这时候你需要打开你的hadoop文件配置界面进行重新配置
    其中yarn的内容为
    <configuration>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
    </configuration>
​
    mapread文档的内容为:
    <configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
    </configuration>
​
    修改完之后进行yarn的重启操作之后进行sqoop的后续相关操作。
2.如果你是能够正常的运行mapread,但是报错显示导出数据报错Can‘t parse input data‘中文字符’
    解决方法,检查你的hive和mysql中数据库中的支持的字符集是否相同,
    其中hive中的字符集为utf-8,但是mysql中默认的字符集为utf8mb4 ,这个字符集是utf-8的扩展类,但是和utf-8不互相兼容,这个字符集能够接受的字符数为4个utf-8的字符数为3个,需要更改mysql中的字符集为utf8mb3,MySQL中的这个字符集是和utf-8相对应。
    其中要求改的配置文件为,windows端为my.ini linux端为my.cnf
    文件所在位置为:
    linux端所在的位置为:/etc/my.cnf或者在/etc/mysql/my.cnf
    要加入的内容为:
    [client]
    default-character-set=utf8mb4
​
    [mysql]
    default-character-set=utf8mb4
​
    [mysqld]
    character-set-server=utf8mb4
    collation-server=utf8mb4_general_ci
    init-connect='SET NAMES utf8mb4'
    skip-character-set-client-handshake
    如果没有上面两项client和mysql中的标志,请自己把他加上。

另外写一下sqoop日志分析,参考博客解决Sqoop导出数据报错Can‘t parse input data 和 NoSuchElementExceptionsqoop报错日志定位问题,可以参考 博客 和 博客 第二个是在hdfs文件系统中寻找logs日志文件,通过分析日志文件进行分析报错原因。

utf8mb4是4位字节的存储,utf8mb3是3位字节的存储,utf-8是3位字节,导入导出的时候格式要匹配

我的主要报错就是在mysql和hive中的字符不匹配问题,没有更改为utf8mb3格式。

标签: hadoop sqoop mysql

本文转载自: https://blog.csdn.net/m0_73297006/article/details/140924431
版权归原作者 摆烂的电子锁 所有, 如有侵权,请联系我们删除。

“Sqoop在mysql和hadoop互导的时候发生报错分析:”的评论:

还没有评论