背景:部署CDH集群的 hive 服务,选用 mysql 作为 hive 元数据的存储数据库,通过 hive cli 建表时发现中文注释均乱码。
现象:hive端建表中文注释乱码。
定位:
已经确认过 mysql 库的默认编码是 utf-8,并且 mysql 中建库建表不存在中文乱码的情况。
于是查看hive库表的编码,分别通过如下方式查看hive库和随机某个表的编码,发现hive表的编码是 lantin1,问题也就出在这里。
查看hive库编码:
查看hive表编码:
解决方法:
将hive表中所有关于注释的编码有 lantin1 修改为 utf-8。
alter table COLUMNS_V2 modify column COMMENT varchar() character set utf8;
alter table TABLE_PARAMS modify column PARAM_VALUE varchar() character set utf8;
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar() character set utf8;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar() character set utf8;
alter table INDEX_PARAMS modify column PARAM_VALUE varchar() character set utf8;
至此,hive 端建表中文注释乱码问题已解决。
【参考资料】