背景:MySQL编码是utf-8,MySQL中建库建表中文显示都正常,但在Hive窗口中建表时字段中文注释均乱码的问题。
问题:Hive中建表后字段中文注释显示异常。
1. 定位 MySQL 端问题
查看 MySQL 字符集编码
MySQL 中新建表中文注释显示正常
由此可以定位到并不是 MySQL 服务端的编码问题。
2. 定位 Hive 元数据问题
查看Hive库表在MySQL中的元数据信息,发现数据库的编码是utf8,而库中表的编码是latin1,所以才会导致hive中中文显示乱码。
至此就能定位到了是 Hive 元数据表的问题了,需要修改相关表或字段的编码。
3. 解决方案
将 Hive 原数据库表中有关中文显示的表或者字段的编码改为 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;
在Hive中新建表,然后查看中文字段显示情况,正常。
【参考资源】