Hive端建表中文注释乱码
MySQL编码是utf-8,MySQL中建库建表中文显示都正常,但在Hive窗口中建表时字段中文注释均乱码的问题。
- 定位 MySQL 端问题
--查看 MySQL 字符集编码是否为utf-8
show variables like '%character%'
- 定位 Hive 元数据问题
查看Hive库表在MySQL中的元数据信息,发现数据库的编码是utf8,而库中表的编码是latin1,所以才会导致hive中中文显示乱码。
show create database hive元数据库;
show create table columns_v2;
--默认编码为latin1,查看是否为默认编码
- 解决方案
将 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中新建表,然后查看中文字段显示情况,正常。