Hive数据表中文乱码问题解决

转载自:mysql设置默认编码,hive中解决中文乱码

环境:hive-2.1.1,Hadoop-2.7.3,Ubuntu16.0.4,Mysql-5.7

出现乱码的现象如图:

Hive数据表中文乱码问题解决_第1张图片

该方法只适合修改配置后新建的表,对于在修改配置之前建的表,依然会出现乱码。

1.Ctrl+t打开终端

2.输入mysql -u root -p 命令,进入MySQL

输入 SHOW VARIABLES LIKE 'char%'; 查看MySQL编码,有两个不是utf8

Hive数据表中文乱码问题解决_第2张图片

3.在终端中输入 sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf  命令

Hive数据表中文乱码问题解决_第3张图片

打开mysqld.cnf 文件,在lc-messages-dir= /usr/share/mysql 语句后添加 character-set-server=utf8 语句

Hive数据表中文乱码问题解决_第4张图片


4.在终端输入 sudo gedit /etc/mysql/conf.d/mysql.cnf 命令打开mysql.cnf配置文件,如图添加代码:default-character-set=utf8 如图:

Hive数据表中文乱码问题解决_第5张图片

5.在终端中输入  /etc/init.d/mysql restart 命令重启MySQL服务,如图所示,重启成功。


Hive数据表中文乱码问题解决_第6张图片

6.再次输入进入MySQL  输入 SHOW VARIABLES LIKE 'char%';  命令 ,显示修改成功


Hive数据表中文乱码问题解决_第7张图片

7.进入MYSQL中元数据hive执行以下命令:


Hive数据表中文乱码问题解决_第8张图片

Hive数据表中文乱码问题解决_第9张图片

修改表字段注解和表注解
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8
② 修改分区字段注解:
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8 ;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
③修改索引注解:

alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8
② 修改分区字段注解:
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8 ;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
③修改索引注解:

alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

8.修改hive-site.xml元数据库连接字符串为:

  
        javax.jdo.option.ConnectionURL  
        jdbc:mysql://192.168.244.3:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8  
        JDBC connect string for a JDBC metastore      
       

一定要将连接中的&符合修改为&

9.重启hive

10.查看hive表中是否载出现乱码

Hive数据表中文乱码问题解决_第10张图片

可以看到没有再出现乱码。

该方法只适合修改配置后新建的表,对于在修改配置之前建的表,依然会出现乱码。

你可能感兴趣的:(hive)