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)

<!-- 存储元数据mysql相关配置 -->
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://node1:3306/hive3?createDatabaseIfNotExist=true&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</value>
</property>

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数据库的元数据信息没有改,

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

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

最终解决问题!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值