背景: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中新建表,然后查看中文字段顯示情況,正常。

【參考資源】
