hive解决中文注释乱码问题

记录一次解决中文乱码问题,但严格来说不是我独立解决的,但anyway,解决方式值得被记录。

当时虚拟机里面的数据库是mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar

最开始搜索网上资料,按照比较普遍的改法,以前也亲测过,曾经是成功过的,

1. 进入数据库metastore执行以下SQL语句 

use hive3;
-- 修改表字段注解和表注解
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;

2.修改metastore 的链接url (hive-site.xml)



    javax.jdo.option.ConnectionURL
    jdbc:mysql://node1:3306/hive3?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8

3.重启客户端

但这次试了一下没有成功。

=======================================================================

然后通过show variables like 'character%'; 发现mysql库里面的编码没有改

最开始通过会话级别修改mysql编码, 在mysql中执行

set character_set_database=utf8;
set character_set_server=utf8;
set character_set_client=utf8;
set character_set_connection =utf8;
set character_set_results =utf8;

发现没有还是不管用,

=======================================================================

然后去修改/etc/my.cnf文件,最开始用utf8,但是重启mysql失败,

查了博文发现,

“在 mysqld 中使用 default-character-set 设置, mysql 启动会报错而无法启动。

说明

关于utf8字符集,我们国内默认选择:utf8_general_ci而不是utf8_unicode_ci ”

最终,改成这样:

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

[mysqld]

init_connect='SET collation_connection = utf8_unicode_ci'

init_connect='SET NAMES utf8'

character-set-server=utf8

collation-server=utf8_unicode_ci

skip-character-set-client-handshake
————————————————
原文链接:https://blog.csdn.net/weixin_31328561/article/details/113555423

然后

1)service mysql restart 重启数据库服务

2)重新进入数据库客户端

3)删掉原来的库和表

4)执行前面 【进入数据库metastore执行的6条SQL语句】

5)重新 建库建表

发现, desc formatted 表名 可以看到字段的中文注释了

但是,表注释看不到!!!

=======================================================================

然后继续研究,发现

这个hive数据库的元数据信息没有改,

hive解决中文注释乱码问题_第1张图片

最后,前面6条sql语句后面加上,

alter table  DBS  modify column `DESC`  varchar(4000) character set utf8;

最终解决问题!

你可能感兴趣的:(hive,hive,sql)